我正在进行一次看起来像 vbulletin 4 的导入,其中包含数百万条帖子。我正在使用的服务器非常慢(当我放弃时,用户导入速度约为每分钟 50 条)。粗略计算表明这需要 3 个月。
所以,我将再次尝试批量导入脚本。我在生产容器中运行常规导入脚本。同一个容器可以正常运行标准脚本,但无法访问 Discourse 数据库。但是批量导入程序希望访问 /var/run/postgresql/.s.PGSQL.5432,而不是使用生产环境和常规导入脚本使用的东西。所以我将此添加到 web_only.yml。
- volume:
host: /var/discourse/shared/data/postgres_run
guest: /var/run/postgresql
现在我可以访问 postgres 了。
但是,我无法访问 mysql。在常规脚本中以及从 mysql 命令行在容器内工作的相同凭据不起作用。我收到访问被拒绝的错误。我添加了一个 puts 来查看凭据是否符合预期,它们确实符合,但是常规脚本中的代码:
@client =
Mysql2::Client.new(host: DB_HOST, username: DB_USER, password: DB_PW, database: DB_NAME)
可以正常工作,但是这个:
@client =
Mysql2::Client.new(
host: host,
username: username,
password: password,
database: database,
reconnect: true,
)
却不行。我检查了,并且
puts "#{username}:#{password}@#{host}/#{database}"
puts "PASSWORD: #{password.inspect}"
显示一切都符合预期。
我需要在一个开发环境中运行它吗?(为什么?)
我对于 mysql 连接如何在 mysql 客户端和常规导入脚本中工作,但在批量脚本中却不行感到非常困惑。代码看起来一样。我在 base.rb 脚本中没有看到任何关于 mysql 的内容。
或者也许这台机器闹鬼了。