Talvez seja melhor abrir um chamado com a Duffield Ocean sobre os caracteres estarem incorretos?
Você pode usar um cliente SSH como o PuTTY ou o novo shell que, acredito, faz parte do subsistema do Linux para Windows (a última versão do Windows que usei tinha um ano como descritor de versão, então não posso ajudar muito). Se você usa um Mac, basta abrir um terminal e usar o ssh.
Se seu banco de dados for grande, levará um tempo para carregar e não haverá nenhuma saída, apenas um novo prompt quando terminar. Minha suposição é que estava funcionando corretamente.
Outra solução é permitir o acesso direto ao banco de dados a partir do droplet que está executando a importação, eliminando assim a necessidade de um banco de dados local.
Se já passou uma hora, é provável que o processo não esteja ocorrendo. Você pode tentar algo como
Pups::ExecError: if [ -z "$LETSENCRYPT_ACCOUNT_EMAIL" ]; then echo "LETSENCRYPT_ACCOUNT_EMAIL ENV variable is required and has not been set."; exit 1; fi failed with return #<Process::Status: pid 1187 exit 1>
Eu não tinha o letsencrypt instalado, então o instalei.
O que falta em “Preparando o Host e o container do Discourse para importação” é que você precisa descomentar a linha de ambiente para LETSENCRYPT_ACCOUNT_EMAIL e inserir seu endereço de e-mail. Isso me fez ultrapassar esse erro.
Na continuação, agora estou na etapa final de importação. Entro no contêiner de importação e executo o script de importação. Ele encerra imediatamente com:
Traceback (most recent call last):
1: from script/import_scripts/smf2.rb:4:in `<main>'
script/import_scripts/smf2.rb:4:in `require': cannot load such file -- mysql2 (LoadError)
Fiz muitas pesquisas na web, mas até agora sem sucesso.
EDIT: Acredito que isso possa ser porque o MySQL não está instalado no contêiner. Terei ‘gem install mysql2’, mas isso retorna:
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
EDIT 2:
Consegui instalar o mysql2. Primeiro, precisei instalar as ferramentas de desenvolvimento, mas a fonte sugerida não estava disponível. Então, executei:
sudo apt-get install default-libmysqlclient-dev
A partir daí, consegui:
gem install mysql2
Ainda obtive o mesmo erro. Então, tentei comentar o require no script apenas para ver o que aconteceria. Apareceu um novo erro:
Traceback (most recent call last):
6: from script/import_scripts/smf2.rb:627:in `<main>'
5: from script/import_scripts/smf2.rb:19:in `run'
4: from script/import_scripts/smf2.rb:447:in `parse!'
3: from script/import_scripts/smf2.rb:502:in `parser'
2: from script/import_scripts/smf2.rb:502:in `new'
1: from /usr/local/lib/ruby/2.6.0/optparse.rb:1089:in `initialize'
script/import_scripts/smf2.rb:504:in `block in parser': can't modify frozen String (FrozenError)
Pesquisando sobre isso, encontrei um antigo bug do Ruby, mas ele foi corrigido há muito tempo, então estou travado novamente.
Obrigado @Paracelsus! Isso resolveu. Eu mudei de true para false.
Um passo mais perto!
EDIT:
Tive um erro estranho que parecia apontar para o IP errado. Era porque eu tinha a senha errada no Settings.php. Isso foi corrigido.
Agora tentando resolver:
Traceback (most recent call last):
7: from script/import_scripts/smf2.rb:627: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.6.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect': Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory (Mysql2::Error::ConnectionError)
Estou assumindo que esta linha no arquivo de ajuste do script serve para resolver isso:
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
Essa linha deve ser adicionada em algum lugar dentro do container de importação?
Certo, resolvi o problema acima. Isso é um problema com a versão mais recente do MySQL. Ela não suporta mais as senhas nativas mais antigas. A maneira mais fácil de resolver é executar esse processo usando o MySQL 5.7. Basta alterar a etapa 3 de:
docker run -d -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -v ~/smf2:/backup --name=mysql mysql
O nosso veio sem nenhuma etapa extra. Não tenho certeza de onde o SMF armazena os avatares de cabeça. Você trouxe suas anexos? Eu só importei nosso banco de dados SQL e os anexos, então minha suposição é que eles estejam lá.
Sim, eles estavam lá, mas eu movi os avatares para outra pasta e esqueci de copiá-los para a pasta de avatares que a importação usa para corresponder ao usuário. Problema resolvido (mesmo que tenha tido que refazer a importação).
Agora um novo problema… usuários banidos não aparecem como suspensos ao serem importados, apenas como inativados. Alguma ideia de como fazê-los aparecer como suspensos?
Estou usando a versão mais recente v2.50 beta2 do SMF v2.0.17 e há um arquivo smf2.rb diferente gerado devido ao atual:
templates/import/mysql-dep.template.yml
Como explicado no Passo 4, substituindo “quote =”, a iteração atual é:
quote = +“\n[quote="#{params[‘author’]}”
E além disso, não há:
No entanto, prossegui com a importação, mas infelizmente ela falha com “IGNORE_BBCODE, você quer dizer IgnoreUser.”
Desculpe, eu deveria ter tirado um print da Traceback, mas não fiz. De qualquer forma, é o que lembro.
Alguma ideia?
Obrigado.