Como usar um script de importação em massa (por exemplo, vbulletin.rb)

Estou fazendo o que parece ser uma importação do vbulletin 4 com alguns milhões de posts. O servidor em que estou fazendo isso é muito lento (os usuários estavam importando cerca de 50/minuto quando desisti). Uma conta rápida sugere que levará 3 meses.

Então, darei uma chance ao script de importação em massa novamente. Eu executo scripts de importação normais em um contêiner de produção. O mesmo contêiner que estava executando alegremente o script padrão não consegue acessar o banco de dados Discourse. Mas o importador em massa quer acessar /var/run/postgresql/.s.PGSQL.5432 em vez de usar as coisas que a produção e o script de importação regular usam. Então, adicionei isso a web_only.yml.

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

E agora posso acessar o postgres.

Mas então, não consigo acessar o mysql. As mesmas credenciais que funcionam no script regular e que funcionam dentro do contêiner a partir da linha de comando do mysql não funcionam. Recebo um acesso negado. Adicionei um puts para ver que as credenciais eram tudo o que era esperado, e são, mas o código do script regular:

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

funciona bem, mas isso

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

Não. Eu verifiquei, e

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

mostram tudo como esperado.

Preciso executar isso em um ambiente de desenvolvimento? (Por quê?)

Estou bastante confuso sobre como a conexão mysql funciona no cliente mysql e no script de importação regular, mas não no script em massa. O código parece o mesmo. Não vejo nada sobre mysql nos scripts base.rb.

Ou talvez a máquina esteja assombrada.

1 curtida