Preparación para la migración de phpBB

<div data-theme-toc="true"> </div>

Tomé varios pasos para limpiar y preparar los datos antes de migrar mi foro phpBB 3.x a Discourse. Esto describe lo que estoy haciendo para ayudar a otros a prepararse para una migración. Muchas sugerencias eliminarán datos, así que siempre haga una copia de seguridad de la base de datos antes de proceder con cualquiera de las sugerencias a continuación.

Poda de temas y publicaciones antiguas.

Revise sus categorías y determine si todos los temas necesitan ser migrados. ¿Necesita todos los datos o serán suficientes los últimos años de temas? phpBB podará automáticamente los temas según la antigüedad. Puede configurar/ajustar las fechas de poda para sus foros en el ACP de phpBB. Vaya a Foros y seleccione el widget de engranaje para el foro que desea modificar.

Poda de nombres de usuario antiguos.

El importador de Discourse no migrará a los usuarios que no hayan publicado. Entendiendo esto, puede eliminar usuarios antiguos que nunca han publicado. Vaya al ACP de phpBB y seleccione Usuarios y Grupos. Hay una opción para Podar Usuarios. Puede establecer las publicaciones igual a 0 y la fecha de última actividad. Esto le permitirá eliminar a todos los usuarios que nunca han publicado y que no han estado activos en sus foros durante algún tiempo.

Determinar el número de publicaciones de usuarios anónimos.

La migración de Discourse migrará a los usuarios anónimos como usuarios suspendidos o todos a un usuario del sistema. Revise cuántos temas/publicaciones se atribuyen a un usuario anónimo.
MySQL determinará el user_id del usuario anónimo. Para la mayoría de las instalaciones, este es user_id = 1.

SELECT `user_id`, `username` FROM `phpbb_users` where `username_clean` = "anonymous"

Para verificar temas y publicaciones. Actualice la consulta con el user_id anónimo de su sistema.

SELECT * FROM `phpbb_posts` where `poster_id` = "1"
SELECT * FROM `phpbb_topics` where `topic_poster` = "1"

Según estos resultados, debe determinar cómo desea configurar el sistema para manejar las publicaciones y los temas de usuarios anónimos. Yo solo tenía unos pocos y los eliminé.

Revisar publicaciones ocultas o eliminadas suavemente.

Esta fue una característica implementada en phpBB 3.1. Valide si tiene alguna publicación oculta o eliminada suavemente. Discourse ignora este campo e importará las publicaciones. Las publicaciones fueron eliminadas por el usuario/mods por una razón.

SELECT * FROM `phpbb_posts` where `poster_visibility` = "2"

Elimine cualquier publicación que aparezca en la lista.

Validar correos electrónicos limpios.

Ejecute el siguiente script de MySQL para validar sus correos electrónicos para que no tengan espacios al final y elimine cualquier problema de correo electrónico identificado.

SELECT `user_email` FROM `phpbb_users` where CHAR_LENGTH(`user_email`) != CHAR_LENGTH(TRIM(`user_email`)) ORDER BY `user_id` ASC

Validar títulos duplicados.

La configuración de Discourse tiene una opción que permite títulos duplicados. La siguiente consulta le ayudará a comprender si tiene muchos títulos duplicados. Mi foro tenía más de 1000 temas con títulos duplicados, así que actualicé la opción para permitir títulos de temas duplicados.

SELECT `topic_title`, COUNT(*) as count FROM `phpbb_topics` GROUP BY `topic_title` HAVING COUNT(*) > 1 ORDER BY `count` DESC

Encontrar temas huérfanos.

Cada tema debe tener una publicación, pero a veces las cosas fallan. Esto listará todos los temas sin publicaciones.

SELECT * FROM `phpbb_topics` WHERE `topic_id` NOT IN (Select topic_id from phpbb_posts) ORDER BY `topic_approved` DESC

Limpie cualquier tema huérfano.

Encontrar publicaciones huérfanas.

Cada publicación debe pertenecer a un tema. Esto listará las publicaciones que no tienen un topic_id válido.

SELECT * FROM `phpbb_posts` WHERE `topic_id` NOT IN (Select topic_id from phpbb_topics) ORDER BY `post_id` DESC

Limpie cualquier publicación huérfana.

Validar que la primera publicación del tema sea válida.

La primera publicación de un tema puede ser eliminada, lo que resulta en un tema con un topic_first_post_id incorrecto. Esto valida que topic_first_post_id sea válido.

SELECT * FROM `phpbb_topics` WHERE `topic_first_post_id` NOT IN (Select post_id from phpbb_posts) ORDER BY `topic_approved` DESC

Limpie el topic_first_post_id.

Agregaré elementos adicionales a medida que los encuentre al prepararme para una migración próxima. Si tiene alguna verificación recomendada, agréguela a continuación.

7 Me gusta

Muchas gracias por compartir. Estas son muy buenas cosas a verificar en cada migración.

No recuerdo bien si puede suceder en phpBB, pero a menudo verificamos si hay correos electrónicos o nombres de usuario duplicados en la tabla de Usuarios. También verificamos si hay usuarios en espera, no querrás migrarlos como usuarios regulares y validados.

Dependiendo de la versión de phpBB, podrías agregar una verificación al código para que no tengas que eliminar las publicaciones manualmente cada vez.

Aunque, es bueno revisar manualmente las publicaciones eliminadas. Algunos administradores pueden querer conservarlas (ocultas, para fines de archivo) en lugar de eliminarlas permanentemente.

2 Me gusta