Manejo de problemas de compatibilidad de bases de datos
Este artículo proporciona instrucciones detalladas para resolver varios problemas de compatibilidad de bases de datos MySQL, incluidas las preocupaciones de compatibilidad y los errores de intercalación de tablas.
Problemas de compatibilidad
Para evitar problemas de incompatibilidad de bases de datos, asegúrese de que las versiones de la base de datos entre los servidores de compilación e instalador sean lo más cercanas posible. Si la copia de seguridad se creó en una versión de base de datos más reciente que aquella en la que se está instalando, es posible que encuentre problemas.
Es mejor asegurarse de que el servidor donde se ejecuta el instalador tenga el mismo número de versión o uno superior al del servidor donde se compiló. Si las versiones principal y secundaria son las mismas o cercanas (por ejemplo, [5.7 a 5.6]), la migración debería funcionar sin problemas. Un par de versiones [5.7 a 5.1] es más probable que cause problemas a menos que tenga una configuración muy simple. Si las versiones están demasiado separadas, trabaje con su proveedor de alojamiento para actualizar el motor MySQL en este servidor.
Solución 1: FORMATO UTF8MB4
Si la versión actual del servidor MySQL detectada es inferior a 5.5.3 (lanzada el 8 de abril de 2010), el soporte para tablas utf8mb4 no funcionará. El formato utf8mb4 solo se admite en MySQL server 5.5.3+. Se recomienda encarecidamente actualizar su versión de MySQL server en este servidor para que sea más compatible con las versiones recientes de WordPress y evitar problemas con errores de instalación.
Solución 2: ENTRADAS UTF8
Si se detectan caracteres no ASCII como parte de la cadena de conexión de la base de datos y el servidor MySQL no está configurado correctamente, no podrá conectarse. Este problema se puede resolver actualizando la configuración my.ini de MySQL.
Agregue la configuración character_set_server=utf8 en [mysqld] y reinicie el servidor de la base de datos. Es posible que este valor solo necesite ser descomentado.
Solución 3: CONFIGURACIONES MARIA-DB
Si aparece una versión 10.N.N, la distribución de la base de datos es una variante de MariaDB de MySQL. Si bien las distribuciones son muy similares, existen algunas diferencias sutiles. Algunos sistemas operativos informarán la versión como "5.5.5-10.1.21-MariaDB", mostrando la correlación de ambas. Visite la página en línea MariaDB versus MySQL: Compatibilidad para obtener más detalles.
Tenga en cuenta que algunos mensajes son simplemente avisos. Se recomienda encarecidamente continuar con el proceso de instalación y supervisar de cerca el archivo installer-log.txt junto con el informe de instalación que se encuentra en el paso 3 del instalador. Asegúrese de buscar cualquier aviso/advertencia/error en estas ubicaciones para validar que el proceso de instalación no detectó ningún error. Si se encuentran problemas, visite las páginas de preguntas frecuentes y consulte la pregunta “¿Cómo resolver errores de base de datos o advertencias generales en el informe de instalación?”
Solución 4: CREAR TABLAS
La creación de tablas en MySQL y MariaDB es muy similar; sin embargo, existen algunas pequeñas diferencias que a veces (no es común) pueden causar problemas. Para ver las diferencias entre cada una, consulte los dos conjuntos de documentación aquí:
Como puede ver, no son una correspondencia uno a uno (MariaDB tiene opciones que MySQL no tiene), por lo que cuando intenta ejecutar una consulta CREATE que funcionó en MariaDB pero tiene alguna opción de tabla que MySQL no admite, puede fallar. La solución actual es eliminar las opciones de tabla ofensivas del volcado de la base de datos haciendo una búsqueda y reemplazo manual en el archivo.
Problemas de intercalación de tablas
¿Cómo resolver el modo de compatibilidad y los errores de ‘collation desconocida’?
Hay 4 formas de resolver este problema. La opción 1 es la forma más rápida, fácil y segura de resolver este problema.
Descripción general de collation desconocida
Un error de “collation desconocida” significa que el servidor MySQL en el que se está instalando (servidor de destino) es anterior al motor MySQL en el que creó la copia de seguridad. Se activará un mensaje de error como:
ERROR error de base de datos escritura ‘Unknown collation: ‘utf8mb4_unicode_ci’
se activará porque la versión de MySQL utilizada no admite este formato de tabla. Puede ver la comparación de versiones del servidor MySQL haciendo clic en el botón “Probar conexión” en el instalador o viendo el archivo installer-log.txt. La salida se parecerá a esto:
VERSIÓN MYSQL: Este Servidor: 5.4.22 — Servidor de Compilación: 5.7.10
Opción 1 – Actualizar software de base de datos
La forma más limpia y segura de solucionar el problema de “collation desconocida” es actualizar su servidor MySQL de destino a una versión igual o más reciente que la del servidor donde se creó la copia de seguridad. Los errores de formato más comunes incluyen:
- utf8mb4_unicode_ci: Se requiere MySQL server 5.5.3+.
- utf8mb4_unicode_520_ci: Se requiere MySQL server 5.6+.
Mejor solución: La mejor y más fácil manera de resolver este problema es pedirle a su proveedor de hosting que mueva su cuenta a un servidor MySQL que admita el tipo de collation que necesita (ver ejemplo anterior). Simplemente deles el mensaje de error que está recibiendo y ellos podrán ayudarlo a moverse al servidor correcto.
La mayoría de los proveedores de hosting no actualizarán el servidor actual en el que se encuentra su sitio; sin embargo, deberían poder mover fácilmente su cuenta a un servidor más nuevo. Esta es una práctica muy común y un buen proveedor de hosting debería poder ayudarle con bastante facilidad.
Si está ejecutando una versión inferior a la 5.5.3, está utilizando una versión muy desactualizada del servidor MySQL. La versión 5.5.3 se lanzó en 2010, lo que significa que la versión del servidor MySQL que está utilizando es aún más antigua. Recomendamos encarecidamente a los usuarios que trabajen con sus hosts para utilizar software actualizado para mejorar la seguridad y el rendimiento, y para mantenerse al día con las actualizaciones del núcleo de WordPress. No permita que un host de mala calidad utilice software obsoleto en su sitio.
Opción 2 – Juego de caracteres y intercalación predeterminados
En el instalador, en el paso 2, bajo opciones, la casilla 'Legado' ya no existe. Sin embargo, ahora se detecta y se establece automáticamente. Si el juego de caracteres y la intercalación no se definen explícitamente, aparecerá un aviso indicando que se utilizará el juego de caracteres y la intercalación predeterminados.
Al crear una tabla de base de datos, la versión de MySQL que se está utilizando puede no admitir el tipo de intercalación de la versión de MySQL donde se creó la tabla. En este escenario, el instalador utilizará automáticamente un tipo de intercalación de reserva para intentar crear la tabla.
Opción 3 – Ejecutar modo de compatibilidad
El modo de compatibilidad de Mysqldump ayuda a producir una salida de script SQL de base de datos que es más compatible con otros sistemas de bases de datos o con servidores MySQL más antiguos.
Duplicator admite varios modos de compatibilidad, todos los cuales solo están disponibles cuando el modo mysqldump está habilitado en el plugin. El modo de compatibilidad se puede habilitar al crear una copia de seguridad utilizando la opción mysqldump.
Duplicator solo permitirá el modo de compatibilidad durante el proceso de creación. No está permitido al crear plantillas o con programaciones. La razón de esta configuración es disuadir el uso de estas configuraciones y solucionar el problema real, que es actualizar su servidor de base de datos.
Actualizaciones de bases de datos: El modo de compatibilidad solo debe usarse como último recurso. El enfoque recomendado para solucionar problemas de bases de datos es asegurarse de que ambos servidores de bases de datos estén actualizados y muy cerca en los números de versión (ver Opción 1). Por ejemplo, si el servidor de base de datos donde creó la copia de seguridad es 5.7.5, entonces el servidor de base de datos donde instala la copia de seguridad debe estar al menos en el rango 5.7.N. Pida a su host o administrador de servidor que actualice el servidor MySQL a una versión más reciente si es posible. Si su host no actualiza a una versión reciente, pídales que actualicen a la versión más alta posible.
Preservación de datos: Si bien existen varias soluciones alternativas en Internet (Opción 4) que explican cómo puede modificar el archivo SQL actual o utilizar el modo de compatibilidad de mysqldump, el problema subyacente principal es que almacenó datos en un formato y ahora va a convertirlo. Estas técnicas pueden provocar pérdida de datos y problemas de compatibilidad en el futuro. El enfoque correcto es actualizar el software MySQL.
Considere probar ambos modos:
- Duplicator actualmente admite dos modos diferentes: Mysqldump y Modo PHP (ver opción Configuración » Copias de seguridad).
- Si tiene problemas de caracteres y se está quedando sin opciones, puede considerar intentar crear la base de datos en ambos modos para ver si uno u otro resuelve los problemas.
Opción 4 – Configuraciones manuales
Estas opciones son para usuarios avanzados y deben realizarse con precaución. Las opciones requieren actualizar el script database.sql o actualizar los tipos de intercalación de la tabla de base de datos de origen. A continuación se presentan tres enfoques diferentes; solo se requiere una opción para abordar el problema.
Actualizar database.sql
Para problemas de “intercalación desconocida” puede intentar los siguientes pasos:
- Extraiga el archivo zip del archivo manualmente.
- Abre el archivo database.sql con el bloc de notas y busca y reemplaza las intercalaciones. Por ejemplo, podrías:
- reemplazar: ‘utf8mb4’ con ‘utf8’
- reemplazar: ‘utf8_unicode_520_ci’ con ‘utf8_general_ci’
Intente siempre estas opciones primero en un entorno de pruebas y nunca en un sitio de producción hasta que esté satisfecho con los resultados.
Luego navegue hasta el archivo installer.php en el servidor y elija Avanzado & marque “Extracción manual”.
Esto también se puede intentar con otras intercalaciones (es decir, reemplazar ‘tipo_intercalacion_1’ con ‘tipo_intercalacion_2’).
Actualizar base de datos de origen con código
Esta opción requiere que realmente entienda su sistema y haya hecho copias de seguridad con antelación. El script le permitirá alterar la intercalación en el servidor de compilación para que pueda ser compatible con el servidor de destino. El script completo se puede ver en Stack Overflow en: http://stackoverflow.com/a/29939906/2808424
Actualizar la base de datos de origen con IDE
Si no se siente cómodo ejecutando el código anterior, también puede usar una herramienta IDE o GUI que le permita cambiar manualmente las intercalaciones de las tablas, ya sea con sentencias SQL o a través de una interfaz. Nuevamente, estas opciones requieren que realmente entienda su sistema y haya hecho copias de seguridad con antelación.
A continuación se detallan instrucciones paso a paso fáciles de seguir para actualizar las intercalaciones a través de un IDE como phpMyAdmin: