Re: Migrar un foro phpBB3 a Discourse

Hola,

¿Se admite phpBB3.3.3 o es estrictamente 3.3.0? Al realizar el paso 1.5:

/var/discourse/launcher enter import

de Migrate a phpBB3 forum to Discourse - documentation / sysadmin - Discourse Meta
recibo (ya lo he intentado dos veces) la respuesta:

x86_64 arch detected.
Error response from daemon: No such container: import

Si uso
/var/discourse/launcher enter import.yml

la respuesta es:

x86_64 arch detected.
ERROR: containers/import.yml.yml does not exist or is not readable.
Available configs ( app, import )

¿Hay alguna posibilidad de que esto funcione?

Gracias

Hola, ¡bienvenido! :wave:

Supongo que seguiste la guía desde el principio; ¿está realmente presente el archivo /var/discourse/containers/import.yml?

Parece que el archivo de configuración ha sido eliminado. :thinking:

1 me gusta

Sí, es como en el mensaje anterior, tanto app.yml como import.yml están presentes en el directorio “containers”.

Si entiendo bien, no tuviste ningún problema para seguir los pasos anteriores, crear/editar import.yml junto a app.yml, reconstruir el contenedor import y ahora ni siquiera puedes entrar en él. ¿Es correcto? ¡Eso es extraño, sin duda!

¿Qué devuelve este comando? ls -l /var/discourse/containers

Sigue siendo lo mismo: app.yml e import.yml (más un archivo “bak” de app.yml).

Podría haber “problemas” ya que he estado intentando instalar esto en Lightsail de 1 GB (que inicialmente es de 940 MB y después de actualizar Ubuntu se convierte en “921 MB”). Usé la instalación oficial y lo que se instaló fue algo como 3.3.* beta-algo (mientras que Wiki muestra 3.2 como la versión estable más reciente). La instalación tarda 1h15min-1h20min con 4 GB de swap. el “launcher rebuild import” tarda unas 2 horas.
¿Podría algo terminar incorrectamente debido a la condición de baja memoria?

Por cierto, ¿los archivos de copia de seguridad de la configuración de 2 GB serán legibles en la configuración de 1 GB?

¿Tuvo éxito? Después de una reconstrucción, el contenedor debería iniciarse.
No puedes entrar en el contenedor si no está iniciado (./launcher start import)

Probablemente sea así. Hay varios temas relacionados con la poca memoria/intercambio y el fallo de reconstrucción aquí; normalmente no hay más remedio que aumentar la RAM/intercambio.

No soy un experto aquí, pero espero que alguien pueda darte una mejor perspectiva.

1 me gusta

Aparentemente, la RAM es un problema. Para Lightsail 2GB/2GB, la instalación limpia es entre 3.5 y 4 veces más rápida y la reconstrucción del contenedor de importación fue entre 10 veces más rápida (o incluso más).
Aún así, me temo que el script de importación podría no funcionar para phpBB 3.3.3. De todos modos, lo intenté dos veces con el mismo resultado: solo una palabra de un nombre de categoría (de ~10 categorías) se importó como una “categoría” vacía. El volcado de texto de MySQL es bastante pequeño, 2.66 MB. Todos los prefijos de tabla son los requeridos. Sin imágenes, sin emoticonos, etc.
En general, no hay foros, ni categorías de foros ni publicaciones, pero todos los usuarios (unos pocos cientos) se importaron correctamente junto con sus estadísticas.

Parece que phpBB 3.3.3 fue la actualización que cambió algo sobre la versión de MySQL utilizada, pero este es un archivo de volcado, por lo que no debería importar después de todo.
¿Alguna idea de qué más se puede comprobar?

Recomendaría al menos 4 GB de RAM.

¿Hay algún error? ¿Suena como si el script se hubiera detenido después de obtener una categoría?

1 me gusta

¿Quieres decir 4 GB para abrir/leer/analizar ese archivo de texto de 2,6 MB? ¿Eres el desarrollador de Discourse? Un ejecutable binario para leer ese volcado (extrayendo todos los datos utilizados por Discourse) y guardarlo en cualquier otra cosa debería ser, en mi opinión, de alrededor de 200 KB con un búfer de, digamos, 100 KB (sin molestarse en incluir todo MariaDB para esta simple acción).

Creo que no se trata de RAM. El procedimiento fue rápido y mostró el progreso de importación para esas tablas importadas. No se “cerró”. La tabla de usuarios está al final del volcado, después de los temas, etc.

Quería volver a hacerlo, experimentando copiando/pegando esa tabla de usuarios en la parte superior y realizando los mismos pasos del manual/página anterior (también con un volcado creado por phpMyAdmin en lugar de phpBB), pero ahora Discourse se niega a iniciar el procedimiento intentando conectarse de forma remota aunque no se agregaron datos de conexión.

Reconstruí el contenedor de importación, pero ¿quizás hay que eliminar algo primero?

Me gano la vida apoyando Discourse y he realizado más migraciones de las que puedo contar, pero creo que cien o más. 2 GB probablemente funcionarán, especialmente si solo tienes unos pocos miles de temas y usuarios, pero como lo necesitas por un corto período de tiempo, más RAM no es caro y no puede hacer daño. Estoy de acuerdo en que probablemente no sea el problema.

Cuando se ejecutó el script, ¿contó las categorías, usuarios, temas y publicaciones?

El script omitirá los datos importados y creará datos de campos personalizados para omitirlos en el futuro, por lo que para ejecutarlo nuevamente, necesitas borrar la base de datos de Discourse. Dado que dices que no importó nada, no está claro si eso es necesario. Parecería que o lo importó y no puedes encontrarlo por alguna razón, o falló porque no encontró los datos y necesitas modificar el script de alguna manera; en ninguno de esos casos deberías necesitar borrar la base de datos.

Dado que dices que no importó nada

No exactamente:
“todos (unos cientos) de los usuarios se importaron correctamente junto con sus estadísticas”

Intenté reconstruir el contenedor de nuevo. La misma configuración. No cambié nada y después del paso:
import_phpbb3.sh # dentro del contenedor de Docker
el script ahora muestra:
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:97:in `connect’: Unknown database ‘phpbb’ (Mysql2::Error)

¿Quizás todavía quedan algunos archivos temporales usados anteriormente para eliminar?

Eventualmente usé el volcado de phpMyAdmin. ¿Hay algún ejemplo (o especificaciones más detalladas) de cómo crear las secciones de mapeo en el archivo settings.yml (de importación)?
Mi tabla php_forums se ve así:

forum_id, MEDIUMINT(8) ...	parent_id, MEDIUMINT(8) ...
3	0
8	3
7	3
9	3
10	3
11	0
12	11
13	11
14	11
15	11
17	3

Parece que, independientemente de los IDs que use y de si también especifico la sección “new_categories: ”, el mensaje generado por el contenedor de importación está bien:
creando nuevas categorías
11 / 11 (100.0%) [2803 elementos/min] n]
creando categorías
11 / 11 (100.0%) [2704 elementos/min]

pero lo que se crea son dos categorías principales (que eran “forums” en phpBB con parent_id 0) y una subcategoría vacía en cada una de ellas. El procedimiento importa todas las publicaciones, pero todas están “huérfanas”.

Parece que algo ha cambiado en tu versión de phpbb3.

Bueno, en realidad, di un paso adelante para solucionar mi propio error: acabo de colocar comentarios en el archivo settings.yml usando el estilo C/C++, al final de las líneas. Esto aparentemente impidió que los subforos fueran “procesados” (aunque no se mostraron errores).

Agregué las categorías y subcategorías como “nuevas” y mapeé los IDs antiguos.
Todavía están todas las publicaciones que no están adjuntas a ninguna categoría. ¿Se almacenan dichos temas en una tabla de Postgres? ¿Cómo se pueden eliminar?

He agregado algunas correcciones a phpbb_mysql.sql al menos para que el script cree todas las categorías originales, pero no es suficiente.
Al procesar temas/publicaciones, solo hay una larga lista del tipo:

El post padre [algún id] no existe. Saltando [algún id]

y, por supuesto, no se importan publicaciones.
Me pregunto si alguien podría confirmar que los scripts predeterminados no funcionan con las tablas de phpBB 3.3.3.

Finalmente pude usar el archivo de volcado de phpBB3.3.3 sin definir las categorías como nuevas y sin todo el mapeo en el archivo settings.yml.

Con el archivo de volcado original phpBB_mysql.sql, el script de migración se detiene en el paso donde se cargan las categorías y muestra un error sobre “un cuerpo de categoría vacío”.
Ocurre si el campo “forum_desc” en la tabla “phpbb_forums” para las categorías principales del foro (que no tienen categorías principales).
Después de importar solo esa primera categoría parcialmente, el resto aparentemente se desordena.
Usar una instalación nueva e ingresar algo de texto en los campos de la tabla anterior parece resolver este problema.