Comment utiliser un script d'importation en masse (par exemple, vbulletin.rb)

Je fais ce qui semble être une importation vbulletin 4 avec quelques millions de messages. Le serveur sur lequel je travaille est très lent (les utilisateurs importaient à environ 50/minute quand j’ai abandonné). Les calculs approximatifs suggèrent que cela prendra 3 mois.

Je vais donc donner une autre chance au script d’importation en masse. J’exécute les scripts d’importation normaux dans un conteneur de production. Le même conteneur qui exécutait joyeusement le script standard ne peut pas accéder à la base de données Discourse. Mais l’importateur en masse veut accéder à /var/run/postgresql/.s.PGSQL.5432 plutôt que d’utiliser ce que la production et le script d’importation régulier utilisent. J’ajoute donc ceci à web_only.yml.

  - volume:
      host: /var/discourse/shared/data/postgres_run
      guest: /var/run/postgresql

Et maintenant, je peux accéder à postgres.

Mais ensuite, je ne peux pas accéder à mysql. Les mêmes identifiants qui fonctionnent dans le script régulier et qui fonctionnent à l’intérieur du conteneur depuis la ligne de commande mysql ne fonctionnent pas. J’obtiens un accès refusé. J’ai ajouté un puts pour voir que les identifiants étaient bien ceux attendus, et ils le sont, mais le code du script régulier :

    @client =
      Mysql2::Client.new(host: DB_HOST, username: DB_USER, password: DB_PW, database: DB_NAME)

fonctionne très bien, mais ceci :

      @client =
        Mysql2::Client.new(
          host: host,
          username: username,
          password: password,
          database: database,
          reconnect: true,
        )

ne fonctionne pas. J’ai vérifié, et :

    puts "#{username}:#{password}@#{host}/#{database}"
    puts "PASSWORD: #{password.inspect}"

affichent tout comme prévu.

Dois-je exécuter cela dans un environnement de développement ? (Pourquoi ?)

Je suis assez perplexe quant à la façon dont la connexion mysql fonctionne dans le client mysql et le script d’importation régulier, mais pas dans le script en masse. Le code semble identique. Je ne vois rien concernant mysql dans les scripts base.rb.

Ou peut-être que la machine est hantée.

1 « J'aime »