Cuando se trata de migrar una web en WordPress de un servidor a otro, suelo tomarme el tiempo de hacerlo más o menos manualmente. O sea, que no utilizo (aún) un plugin (como Duplicator). Siempre que sea posible me gusta aprender a hacer las cosas de forma manual para que, cuando pase a hacerlas de forma asistida, haya podido asimilar un conocimiento de base que me ayude a prevenir y solucionar dificultades en el proceso.
Errores al importar la base de datos MySQL
El caso es que nunca había tenido ninguna dificultad destacable, dejando a un lado los comprensibles tropiezos del comienzo. Hasta que hace unas semanas me tropecé con un escollo un poco más grande de lo normal. Estaba instalando un WordPress directamente en el servidor del alojamiento definitivo y encontré dificultades persistentes importando los datos de ejemplo del tema que íbamos a utilizar. Me decidí a instalarlo en local y ver si el problema era del alojamiento.
Desde el servidor en local (en mi ordenador) no tuve ningún inconveniente, así que hice la instalación del WordPress de la última versión que había en el momento (4.3.3, creo recordar). Instalé el tema e importé los datos de ejemplo, sin contratiempos. Hasta aquí todo perfecto.
El siguiente paso era ya el habitual: copia de seguridad de ficheros por ftp, copia de la base de datos con PHPMyAdmin por otro, llevarlo todo al servidor online, hacer los ajustes de cambio de dominio… pero no. Me daba un error recurrente al importar la base de datos y no me admitía el formato de la base de datos.
Cambios en WordPress y MySQL
Después de darle unas cuantas vueltas encontré información en la Web sobre un cambio a partir de la versión 4.2 de WordPress según el cual —si la base de datos está alojada en un servidor de bases de datos MySQL versión 5.5.3 o superior (entre otras condiciones)— la codificación de las tablas de la base de datos pasará de “utf8” a “utf8mb4”.
El caso es que mi servidor local —origen— tenía una versión superior a la 5.5.3 de MySQL y por lo tanto la base de datos codificada en “utf8mb4”, mientras que el alojamiento destino —en 1and1— tenía un servidor MySQL 5.1, de versión inferior a la de corte, y no poseía la funcionalidad de utilizar la nueva codificación. De ahí los errores en la importación de los datos.
La solución
Independientemente de que ya hay formas más automatizadas de hacer la conversión del formato de codificación de caracteres de la base de datos yo opté por una solución más “directa”: instalar de nuevo en local una versión de WordPress anterior a la 4.2 y sobre ésta el tema y la importación de contenido. En este caso, aunque mi versión local de MySQL era superior a la que comienza a admitir la codificación en “utf8mb4” el WordPress no hizo uso de ella y las tablas fueron exportables 100%.
Me decanté por esta solución puesto que no era mucho trabajo volver a instalar y en caso de la conversión de la base de datos, cualquier error no percibido podría dejar rastros que en el futuro causaran algún funcionamiento inesperado de la web. En todo caso me imaginé qué hubiera ocurrido si hubiera ocurrido lo mismo en alguno de los proyectos que realizo completamente en local hasta que están listas para migrar a sus alojamientos online definitivos… y se me ponen los pelos de punta 😀
Una vez la web en marcha en su alojamiento definitivo actualicé a la última versión de WordPress sin miedo a tener problemas con la codificación (que sigue siendo la más limitada “utf8”).
Conclusión
A la hora de desarrollar un sitio web en WordPress en local para posteriormente subirlo a su servidor online, es importante tener en cuenta:
- Si tenemos un WordPress 4.2 o superior funcionando sobre un servidor MySQL 5.5.3 o superior creará las tablas codificadas en “utf8mb4”.
- Si el servidor MySQL de nuestro alojamiento es de una versión anterior a la 5.5.3 no será compatible con “utf8mb4” por lo que tendremos problemas de compatibilidad de codificación en la importación de la base de datos y nos dificultará la migración.
En este caso podemos plantearnos:
- Actualizar o cambiar el alojamiento a uno con MySQL 5.5.3 o superior.
- Realizar el desarrollo y puesta a punto del sitio web el local en una versión de WP inferior a la 4.2 (poco recomendable pues no sabemos si al actualizar en vivo pueden haber cambios en el funcionamiento).
- Hacernos con una herramienta de conversión de bases de datos MySQL que nos resuelva la papeleta y comprobar que nos funciona bien antes del “momento de la verdad”.
Referencias
La madre del cordero: The utf8mb4 Upgrade
La solución con plugin: Migrating a WordPress site from utf8mb4 to utf8
La referencia en el Codex de WordPress: Version 4.2 (WordPress Codex)
La referencia en Ayuda WordPress: WordPress 4.2 comienza la recta final
La referencia en MySQL.com: Changes in MySQL 5.5.3 (2010-03-24, Milestone 3)
Más sobre Unicode UTF8 -> UTF8MB4: 10.1.11 Upgrading from Previous to Current Unicode Support
Gracias Jose por tu aportación.
Interesante artículo, desconocía ese nuevo formato de codificación, y esta problemática.
En fín, otra cosa más a tener en cuenta a la hora de las migraciones…
Un saludo.
[…] WordPress: Errores de importación MySQL (utf8mb4) organigrafic.com/wordpress-erro… […]
Hola Manuel,
Me alegro de que te haya resultado interesante. Yo también he aprendido en tu blog, especialmente en el artículo sobre la migración de servidor y la realización de DNS: http://hostingsimple.es/2015/01/08/como-hacer-una-migracion-de-servidor-perfecta-y-rapida-sin-esperar-la-replicacion-de-dns/
Un saludo!
Hola, hice lo que recomiendas pero el servidor de destino sigue supuestamente encontrando una línea que llama a utf8mb4, abro esa db en sublime text y es un comentario. Lo borré e intenté nuevamente y nada que funciona.
Trabajé con WP 4.1, cualquier ayuda será muy a agradecida.
Saludos!
¡Hola Santiago!
En principio gracias por contribuir a la entrada.
No entiendo que tengas una tabla codificada en utf8mb4 (no sé si te refieres a eso con la «línea que llama a utf8mb4»).
Mi ejemplo parte de una instalación limpia de un WordPress 4.1, ósea que no hay una base de datos previa que se importa.
¿Podrías detallarme más el proceso que has seguido para que ver si puedo ayudarte?
De todas formas, si en tu caso hay algo ya en la base de datos quizás te interese el enlace que he colocado al final sobre un plugin que hace la migración, aunque yo no lo he probado. Si lo haces me cuentas 😉
http://galengidman.com/2015/07/07/migrating-a-wordpress-site-from-utf8mb4-to-utf8/
Un saludo y gracias por pasarte por aquí 😉
Jose.
Hola. Aquí tenéis la solución que funciona al 100%:
http://www.oscar-dominguez.com/blog/desarrollo-web/solucionar-error-al-importar-una-base-datos-mysql-utf-8/
Saludos.
Hola Óscar!
No acabo de ver que lo que comentas solucione el tema del cambio de codificación “utf8” a “utf8mb4” que ocurre con el cambio de versiones de WP y MySQL al que se refiere mi artículo. Sí que es práctico para tener claro que hay que marcar la opción de “utf8” al exportar la base de datos (con PHPMyAdmin sale por defecto).
Quizás me pierdo algo o no acabo de entenderlo, ¿podrías explicarte mejor?
En todo caso, gracias por tu comentario.
Un saludo,
Jose.
Hola, yo lo he realizado ya en 3 oportunidades con el método de exportar desde el origen con compatibilidad mysql4, lo vi en el siguiente articulo, nisiquiera hay que leer todo solo imagenes y 2 pasos jejeje 1.- exportar personalizado y 2.- cambiar el campo de compatibilidad, después la subimos al nuevo servidor y listo detalles en el enlace :
https://www.nerion.es/soporte/solucion-al-error-1273-unknown-collation-utf8mb4_unicode_ci/
Saludos
¡Hola Mauricio!
No puedo probarlo ahora, pero parece una solución lógica. Desconocía esa opción de salida o si existía en la versión de PHPMyAdmin que yo utilizaba en ese caso. Yo lo probaría antes de seguir con el desarrollo, pero si la opción está pulida no debería de dar problemas.
¡Gracias por tu aporte!
Un saludo