Migração SMF2 para Discourse: Problema

Segui os guias e cheguei até aqui, mas não consigo avançar além deste ponto. Até criei um novo usuário no servidor MySQL com uma senha nativa e tentei, mas sem sucesso.

su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
Carregando grupos existentes...
Carregando usuários existentes...
Carregando categorias existentes...
Carregando posts existentes...
Carregando tópicos existentes...
Traceback (última chamada do erro):
        7: from script/import_scripts/smf2.rb:701:in `<main>'
        6: from script/import_scripts/smf2.rb:28:in `run'
        5: from script/import_scripts/smf2.rb:28:in `new'
        4: from script/import_scripts/smf2.rb:62:in `initialize'
        3: from script/import_scripts/smf2.rb:274:in `create_db_connection'
        2: from script/import_scripts/smf2.rb:274:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': Criptografia RSA não suportada - o plugin caching_sha2_password foi compilado com suporte ao GnuTLS (Mysql2::Error)

Isso parece ser um problema com o script, pois consigo instalar o cliente do MySQL no contêiner e acessar o banco de dados no contêiner do MySQL via linha de comando.

OK. Então, para aqueles que se depararem com isso, precisei fazer bastante ajuste para fazer este script de importação funcionar.

O contêiner Docker do MySQL é a versão 8.

Isso significa que, por algum motivo, a biblioteca MariaDB que o modelo do MySQL incorpora não funciona.

O que fiz de diferente em relação a https://meta.discourse.org/t/smf2-to-discourse-the-ultimate-guide/90314:

Não incluí o arquivo de modelo do MySQL no arquivo de configuração do contêiner de importação.

Construí o contêiner de importação, entrei nele com ./launcher enter import

Então:

echo "gem 'mysql2'" >> Gemfile
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
dpkg -i mysql-apt-config_0.8.17-1_all.deb

Isso apresenta uma solicitação interativa e você pode selecionar as opções padrão (MySQL 8 com ferramentas).

Depois, instalei a biblioteca MySQL 8 padrão e continuei a construção:

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmysqlclient-dev
su discourse -c 'bundle config unset deployment'
su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'

Uma vez que tudo isso foi concluído, o restante foi o mesmo; a importação agora está em execução.

Os desenvolvedores do Discourse podem querer ajustar os scripts de importação para levar isso em consideração. Pelo menos, agora está nos fóruns para que outros vejam caso fiquem presos como eu.

3 curtidas