Я пытаюсь импортировать данные из vBulletin 4 с миллионами постов. Сервер, на котором я это делаю, работает очень медленно (пользователи импортировали примерно 50 постов в минуту, когда я остановился). Грубый подсчет показывает, что процесс займет около 3 месяцев.
Поэтому я решил еще раз попробовать скрипт массовой импорта. Я запускаю обычные скрипты импорта в контейнере production. Тот же контейнер, который без проблем выполнял стандартный скрипт, не может получить доступ к базе данных Discourse. Однако импортер массовой загрузки пытается получить доступ к /var/run/postgresql/.s.PGSQL.5432, а не использовать настройки, которые применяются в production и обычным скриптом импорта. Поэтому я добавил следующее в web_only.yml:
- volume:
host: /var/discourse/shared/data/postgres_run
guest: /var/run/postgresql
Теперь у меня есть доступ к PostgreSQL.
Но затем я потерял доступ к MySQL. Те же учетные данные, которые работают в обычном скрипте и внутри контейнера через командную строку mysql, теперь не работают. Я получаю ошибку «access denied». Я добавил 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.
Или, возможно, машина проклята.