Ich führe einen vBulletin 4-Import mit Millionen von Beiträgen durch. Der Server, auf dem ich dies tue, ist sehr langsam (Benutzer importierten etwa 50/Minute, als ich aufgab). Eine grobe Schätzung legt nahe, dass es 3 Monate dauern wird.
Also gebe ich dem Bulk-Import-Skript noch eine Chance. Ich führe normale Import-Skripte in einem Produktionscontainer aus. Derselbe Container, der das Standard-Skript problemlos ausgeführt hat, kann nicht auf die Discourse-Datenbank zugreifen. Aber der Bulk-Importer möchte auf /var/run/postgresql/.s.PGSQL.5432 zugreifen, anstatt die Dinge zu verwenden, die die Produktion und das reguläre Import-Skript verwenden. Also füge ich dies zu web_only.yml hinzu.
- volume:
host: /var/discourse/shared/data/postgres_run
guest: /var/run/postgresql
Und jetzt kann ich auf Postgres zugreifen.
Aber dann kann ich nicht auf MySQL zugreifen. Dieselben Anmeldeinformationen, die im regulären Skript funktionieren und die von der MySQL-Befehlszeile innerhalb des Containers aus funktionieren, funktionieren nicht. Ich erhalte eine Zugriffsverweigerung. Ich habe ein puts hinzugefügt, um zu sehen, dass die Anmeldeinformationen alles enthalten, was erwartet wird, und das tun sie auch, aber der Code aus dem regulären Skript:
@client =
Mysql2::Client.new(host: DB_HOST, username: DB_USER, password: DB_PW, database: DB_NAME)
funktioniert einwandfrei, aber dieser
@client =
Mysql2::Client.new(
host: host,
username: username,
password: password,
database: database,
reconnect: true,
)
tut es nicht. Ich habe überprüft und
puts "#{username}:#{password}@#{host}/#{database}"
puts "PASSWORD: #{password.inspect}"
zeigen alles wie erwartet.
Muss ich dies in einer Entwicklungsumgebung ausführen? (Warum?)
Ich bin ziemlich ratlos, wie die MySQL-Verbindung in der MySQL-Client- und der regulären Import-Skript funktioniert, aber nicht im Bulk-Skript. Der Code sieht gleich aus. Ich sehe nichts über MySQL in den base.rb-Skripten.
Oder vielleicht ist die Maschine verhext.