Quizás debas abrir un ticket con Duffield Ocean sobre los caracteres incorrectos.
Podrías usar un cliente SSH como PuTTY o la nueva shell que, creo, forma parte del subsistema de Linux para Windows (la última versión de Windows que usé tenía un año como identificador de versión, así que no puedo ayudarte mucho). Si usas una Mac, simplemente abre una terminal y usa ssh.
Si tu base de datos es grande, tardará un tiempo en cargarse y no habrá ninguna salida, solo aparecerá un nuevo prompt cuando termine. Mi suposición es que estaba funcionando correctamente.
Otra solución es permitir el acceso directo a la base de datos desde el droplet que realiza la importación, evitando así el paso de tener una base de datos local.
Si ha pasado una hora, es probable que no esté ocurriendo. Podrías probar 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>
No tenía letsencrypt instalado, así que lo instalé.
Lo que falta en “Preparando el host y el contenedor de Discourse para la importación” es que debes descomentar la línea de entorno para LETSENCRYPT_ACCOUNT_EMAIL e introducir tu dirección de correo electrónico. Eso me permitió superar este error.
En una continuación, ahora estoy en el paso final de importación. Entro al contenedor de importación y ejecuto el script de importación. Este finaliza inmediatamente con:
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)
He realizado muchas búsquedas en la web, pero hasta ahora sin resultados.
EDITO: Creo que esto podría deberse a que MySQL no está instalado en el contenedor. He intentado ejecutar ‘gem install mysql2’, pero me devuelve el siguiente mensaje:
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
EDITO 2:
Logré instalar mysql2. Primero tuve que instalar las herramientas de desarrollo, pero la fuente sugerida no estaba disponible. Así que ejecuté:
sudo apt-get install default-libmysqlclient-dev
A partir de ahí pude ejecutar:
gem install mysql2
Sin embargo, seguí obteniendo el mismo error. Así que intenté comentar esa línea require en el script solo para ver qué ocurría. Apareció un nuevo error:
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)
Al investigar sobre esto, aparece un antiguo error de Ruby, pero fue corregido hace mucho tiempo, así que estoy atascado de nuevo.
¡Gracias @Paracelsus! Eso lo solucionó. Lo cambié de true a false.
¡Un paso más cerca!
EDIT:
Tuve un error extraño que parecía apuntar a la IP incorrecta. Resultó que tenía la contraseña equivocada en Settings.php. Eso ya está arreglado.
Ahora estoy tratando de 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)
Asumo que esta línea en el archivo de ajuste del script está pensada para abordar esto:
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
¿Debería agregarse en algún lugar dentro del contenedor de importación?
¡Bien, he resuelto el problema mencionado! Esto se debe a un problema con la última versión de MySQL, que ya no admite las contraseñas nativas antiguas. La forma más sencilla de solucionarlo es ejecutar este proceso con MySQL 5.7. Simplemente cambia el paso 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
Los nuestros llegaron sin necesidad de pasos adicionales. No recuerdo de inmediato dónde almacena SMF los avatares. ¿Has trasladado tus archivos adjuntos? Yo solo importé nuestra base de datos SQL y los archivos adjuntos, así que supongo que estarán ahí.
Sí, estaban allí, pero moví los avatares a otra carpeta y olvidé copiarlos a la carpeta de avatares que la importación utiliza para vincularlos con el usuario. Problema resuelto (aunque tuve que rehacer la importación).
Ahora un nuevo problema… los usuarios baneados no aparecen como suspendidos al importar, sino simplemente como inactivos. ¿Alguna idea sobre cómo lograr que aparezcan como suspendidos?
Estoy usando la versión más reciente v2.50 beta2 de SMF v2.0.17 y se genera un archivo smf2.rb diferente debido al actual:
templates/import/mysql-dep.template.yml
Como se explica en el Paso 4, al reemplazar “quote =”, la iteración actual es:
quote = +“\n[quote="#{params[‘author’]}”
Y además, ya no existe:
Sin embargo, procedí con la importación y, lamentablemente, falló con el mensaje “IGNORE_BBCODE, ¿quieres decir IgnoreUser”.
Lo siento, debí haber tomado una captura de pantalla del Traceback, pero no lo hice; de todos modos, así es como lo recuerdo.
¿Alguna idea?
Gracias.