Obtenga hoy mismo el mejor plugin de copia de seguridad y migración de WordPress
Obtenga Duplicator ahora

Documentación del duplicador

Documentación, materiales de referencia y tutoriales para Duplicator

Gestión de los problemas de escritura de la base de datos

Este artículo proporciona instrucciones detalladas para resolver varios problemas de bases de datos MySQL, incluyendo errores de escritura, fallos en la creación de bases de datos, problemas de compatibilidad y errores de cotejo de tablas.

Errores de escritura de la base de datos

Si el servidor de destino está en MySQL 5.7+ y el registro de Duplicator muestra errores como: ERROR database error write '...', entonces, puede tener problemas al ejecutar MySQL en modo estricto. Si este es el caso, pruebe las siguientes opciones:

Mensajes de error comunes

  • ERROR BD: No se pudo obtener la consulta CREATE para la tabla wp_XYZ. Información incorrecta en el archivo: './base_de_datos/wp_XYZ.frm'
  • ERROR DE BASE DE DATOS: Esta función no tiene ninguna de las opciones DETERMINISTIC, NO SQL, o READS SQL DATA en su declaración y registro binario...
  • Existe espacio de tabla para la tabla xxx. Por favor, DESCARTAR el tablespace antes de IMPORTAR

Solución 1

Para los errores generales de escritura, hay algunas opciones a considerar. Pruébelas en el orden en que se presentan. La solución más rápida es la OPCIÓN A, sin embargo, para que la opción sea permanente en el servidor considere la OPCIÓN B.

    OPCIÓN A

    • Active el modo Avanzado del instalador.
    • En Opciones " Base de datos " Ajustes de extracción, seleccione Personalizado para los ajustes de Modo e introduzca NO_ENGINE_SUBSTITUTION en el cuadro de texto.
    • Continúe y complete el proceso de instalación.

    OPCIÓN B

    • Abra este archivo en el bloc de notas: C:\wamp64\bin\mysql\mysql5.7.9\my.ini
    • Añada la última línea al fichero:
      [mysqld]
      port = 3306
      sql_mode=NO_ENGINE_SUBSTITUTION
    • Reinicie el servidor MySQL (es posible que los hosts con presupuesto tengan que ponerse en contacto con su proveedor de alojamiento).
    Si las OPCIONES A/B no funcionan, haga lo siguiente:
    • Inicie sesión en su servidor como root y cree el archivo /etc/mysql/conf.d/disable_strict_mode.cnf.
    • Abra el archivo e introduzca estas dos líneas:
      [mysqld]
      sql_mode=IGNORE_SPACE, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
    • Reinicie MySQL ejecutando: $ sudo service mysql restart

    El procedimiento anterior es de serverpilot.io.

    Solución 2

    Resolver problemas de escritura para crear consultas relacionadas con el siguiente mensaje de error:
    mensaje de EXCEPCIÓN: ERROR BD: No se pudo obtener la consulta CREATE para la tabla wp_XYZ. Información incorrecta en el archivo: './base_de_datos/wp_XYZ.frm'

    • Ejecute una reparación de la base de datos en su sitio actual de WordPress.
    • En Instalador Paso 2 " Pestaña Tablas " Desmarque el indicador Importar para la tabla que genera el problema.
    • Como alternativa, al crear una copia de seguridad en el paso 1, excluya la tabla en cuestión para que no se añada.

    Solución 3

    Resuelva los problemas de escritura de las funciones relacionados con el siguiente mensaje de error:
    ERROR DE BASE DE DATOS: Esta función no tiene ninguna de las opciones DETERMINISTIC, NO SQL o READS SQL DATA en su declaración y el registro binario está activado (es posible que desee utilizar la variable lesssafe log_bin_trust_function_creators).

    Ejecute lo siguiente en la consola MySQL O añada lo siguiente al archivo de configuración mysql.ini:

    SET GLOBAL log_bin_trust_function_creators = 1;
    log_bin_trust_function_creators = 1

    La configuración relaja la comprobación de las funciones no deterministas. Las funciones no deterministas son funciones que modifican datos (es decir, tienen sentencias de actualización, inserción o eliminación).
    Para más información, consulte aquí. Para más información, consulte este artículo.

    Si su proveedor de alojamiento no permite la configuración anterior, póngase en contacto con ellos directamente o considere la posibilidad de trabajar con el desarrollador que escribió las funciones y hacer que se reevalúen para que funcionen correctamente con los requisitos del motor de base de datos.

    Solución 4

    Si durante una instalación recibe un mensaje como el que se muestra a continuación, es probable que necesite eliminar uno de los archivos tablename.ibd, que no se eliminó correctamente durante el proceso de eliminación de la tabla de base de datos.

    El tablespace para la tabla xxx existe. Por favor, DESCARTAR el tablespace antes de IMPORTAR
    Para un repaso completo de todas las posibles soluciones para este problema ver este artículo de stack-overflow.

    Fallo en la creación de la base de datos

    Se recibe un mensaje del tipo "No se puede crear la base de datos..." al intentar utilizar la acción de crear base de datos.

    Solución

    "No se puede crear base de datos..." normalmente significa que su host no soporta la creación de bases de datos a través de código PHP. En este caso tendrás que crear una base de datos a través de las herramientas que proporcionan.

    En la mayoría de los hosts puede hacerlo a través del cpanel. Por favor, póngase en contacto con su host para obtener instrucciones sobre cómo crear una nueva base de datos. Los usuarios de Duplicator Pro deberían poder utilizar la pestaña de conexión de cPanel para acceder a sus cuentas de cPanel y crear la base de datos a través de la interfaz del instalador de cPanel. Alternativamente puede utilizar los modos Importar o Sobrescribir.

    Problemas de compatibilidad

    Para evitar problemas de incompatibilidad con la base de datos, asegúrese de que las versiones de la base de datos entre los servidores de compilación y de instalación son lo más parecidas posible. Si la copia de seguridad se creó en una versión de base de datos más reciente que la del servidor donde se está instalando, es posible que surjan problemas.

    Lo mejor es asegurarse de que el servidor en el que se ejecuta el instalador tiene el mismo número de versión o superior al del servidor en el que se creó. Si las versiones mayor y menor son iguales o cercanas (por ejemplo, [5.7 a 5.6]), la migración debería funcionar sin problemas. Un par de versiones de [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 (versión del 8 de abril de 2010), no funcionará el soporte para tablas utf8mb4. El formato utf8mb4 sólo está soportado en MySQL server 5.5.3+. Se recomienda encarecidamente actualizar la versión del servidor MySQL en este servidor para que sea más compatible con las versiones recientes de WordPress y evitar problemas con los errores de instalación.

    Solución 2: ENTRADAS UTF8

    Si se detectan caracteres no ASCII como parte de la cadena de conexión a la base de datos y el servidor MySQL no está configurado correctamente, no podrá conectarse. Este problema puede resolverse actualizando la configuración my.ini de MySQL.
    Añada el valor character_set_server=utf8 en [mysqld] y reinicie el servidor de base de datos. Puede que sólo sea necesario descomentar este valor.

    Solución 3: AJUSTES MARIA-DB

    Si aparece una versión de 10.N.N entonces la distribución de la base de datos es un sabor MariaDB de MySQL. Aunque las distribuciones son muy parecidas, existen algunas diferencias sutiles. Algunos sistemas operativos reportarán la versión como "5.5.5-10.1.21-MariaDB" mostrando la correlación de ambas. Por favor visite la página en línea MariaDB versus MySQL - Compatibilidad para más detalles.

    Tenga en cuenta que algunos mensajes son simplemente avisos. Se recomienda encarecidamente continuar con el proceso de instalación y vigilar 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 estos lugares para validar que el proceso de instalación no detectó ningún error. Si encuentra algún problema, 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 son muy parecidas; sin embargo, hay algunas pequeñas diferencias que a veces (no es común) pueden causar problemas. Para ver las diferencias entre cada uno, ver los dos conjuntos de documentación aquí:

    Como puede ver, no coinciden (MariaDB tiene opciones que MySQL no), así que cuando intente ejecutar una consulta CREATE que funcionó en MariaDB pero que tiene alguna opción de tabla que MySQL no soporta, 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 cotejo de tablas

    ¿Cómo resolver los errores de modo de compatibilidad y "Cotejo desconocido"?

    Hay 4 maneras de resolver este problema. La opción 1 es la forma más rápida, sencilla y segura de resolver este problema.

    Visión general de la intercalación desconocida

    Un error "Unknown collation" significa que el servidor MySQL en el que se está instalando (servidor de destino) es más antiguo que el motor MySQL en el que creó la copia de seguridad. Un mensaje de error como:

    ERROR error de base de datos escribir 'Unknown collation: 'utf8mb4_unicode_ci'
    se activará porque la versión de MySQL que se está utilizando no soporta este formato de tabla. Puede ver la comparación de la versión del servidor MySQL haciendo clic en el botón "Probar conexión" del instalador o visualizando el archivo installer-log.txt. El resultado será algo parecido a

    VERSIÓN MYSQL: Este Servidor: 5.4.22 - Servidor de compilación: 5.7.10

    Opción 1 - Actualizar el software de la base de datos

    La forma más limpia y segura de solucionar el problema "Unknown Collation" es actualizar su servidor MySQL de destino a la misma versión o a una más reciente que aquella en la que se creó la copia de seguridad. Los errores de formato más comunes incluyen:

    • utf8mb4_unicode_ci: Se requiere el servidor MySQL 5.5.3+.
    • utf8mb4_unicode_520_ci: Se requiere MySQL server 5.6+.

    La mejor solución: La mejor y más fácil manera de resolver este problema es pedirle a tu proveedor que mueva tu cuenta a un servidor MySQL que soporte el tipo de cotejo que necesitas (ver ejemplo anterior). Simplemente dales el mensaje de error que recibes y ellos te ayudarán a moverte al servidor correcto.

    La mayoría de los proveedores no actualizan el servidor en el que se encuentra su sitio web; sin embargo, deberían poder trasladar fácilmente su cuenta a un servidor más nuevo. Se trata de una práctica muy habitual y un buen proveedor debería poder ayudarte con bastante facilidad.

    Si está ejecutando cualquier versión inferior a 5.5.3 entonces usted está usando una versión muy anticuada del servidor MySQL. 5.5.3 fue lanzado 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 proveedores de alojamiento para utilizar software actualizado para mejorar la seguridad y el rendimiento y para cumplir con las actualizaciones del núcleo de WordPress. No dejes que un host de mierda utilice software obsoleto en tu sitio.

    Opción 2 - Activar la verificación de la herencia

    En el paso 2 del instalador, en la sección de opciones, hay una opción titulada "Legacy" y etiquetada como "Apply legacy collation fall-back support for unknown collations types". Marque esta casilla para aplicar una intercalación heredada y continuar con la instalación.

    Al crear una tabla de base de datos, es posible que la versión de MySQL que se está utilizando no admita el tipo de cotejo de la versión de MySQL en la que se creó la tabla. En este caso, el instalador recurrirá a un tipo de cotejo heredado para intentar crear la tabla. Este valor sólo debe comprobarse si recibe un error al instalar la base de datos.

    Por ejemplo, si la copia de seguridad se construyó en MySQL 5.7 con un tipo de cotejo de tablas 'utf8mb4_unicode_520_ci' y está ejecutando el instalador en un motor MySQL 5.5 más antiguo que no soporta ese tipo, se producirá un error. Si esta opción está marcada entonces la configuración legacy intentará usar 'utf8mb4_unicode_520', luego 'utf8mb4', luego 'utf8' y así sucesivamente hasta que se quede sin opciones. Aunque esta opción funciona en la mayoría de las configuraciones, la Opción 1 anterior sigue siendo la opción recomendada y más segura.

    Opción 3 - Ejecutar el modo de compatibilidad

    El modo de compatibilidad mysqldump ayuda a producir una salida de script SQL de base de datos que es más compatible con otros sistemas de base de datos o con servidores MySQL antiguos.
    El Duplicador soporta varios modos de compatibilidad, todos los cuales sólo están disponibles cuando el modo mysqldump está habilitado en el plugin. El modo de compatibilidad puede ser habilitado cuando se construye una copia de seguridad usando la opción mysqldump.

    El Duplicador sólo permitirá el modo de compatibilidad durante el proceso de creación. No se permite cuando se crean plantillas o con programaciones. La razón de esta configuración es desalentar el uso de estos ajustes y solucionar el verdadero problema-que es actualizar su servidor de base de datos.

    Actualizaciones de bases de datos: El modo de compatibilidad sólo debe utilizarse como último recurso. El enfoque recomendado para solucionar problemas de base de datos es asegurarse de que ambos servidores de base de datos están actualizados y muy cerca en números de versión (ver Opción 1). Por ejemplo, si el servidor de base de datos en el que creaste la copia de seguridad es 5.7.5, el servidor de base de datos en el que instalaste la copia de seguridad debería ser al menos 5.7.N. Si es posible, pida a su host o administrador del servidor que actualice el servidor MySQL a una versión más reciente. Si tu host no actualiza a una versión reciente, pídeles que actualicen a una versión lo más alta posible.

    Conservación de datos: Aunque existen varias soluciones en Internet (Opción 4) que explican cómo modificar el archivo SQL actual o utilizar el modo de compatibilidad mysqldump, el principal problema subyacente es que ha almacenado los datos en un formato y ahora va a convertirlos. Estas técnicas pueden provocar pérdidas de datos y problemas de incompatibilidad más adelante. El enfoque correcto es actualizar el software MySQL.

    Considera la posibilidad de probar ambos modos:

    • Duplicator soporta actualmente dos modos diferentes: Mysqldump y PHP Mode (véase la opción Configuración " Copias de seguridad).
    • Si te encuentras con problemas de caracteres y se te acaban las opciones, puedes plantearte 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 la actualización del script database.sql o la actualización de los tipos de cotejo de las tablas de la base de datos de origen. A continuación se muestran tres enfoques diferentes; sólo se requiere una opción para solucionar el problema.

    Actualizar database.sql

    Para los problemas de "cotejo desconocido" puede intentar los siguientes pasos:

    1. Extraiga el archivo zip manualmente.
    2. Abra el archivo database.sql con el bloc de notas y busque y reemplace las colaciones. Por ejemplo
      • sustituir: 'utf8mb4' por 'utf8'
      • replace: 'utf8_unicode_520_ci' with 'utf8_general_ci'

    Pruebe siempre estas opciones primero en un entorno aislado y nunca en un sitio de producción hasta que se sienta cómodo con los resultados.
    A continuación, vaya al archivo installer.php en el servidor y seleccione Avanzado y marque "Extracción manual".
    Esto también se puede intentar con otras colaciones (es decir, sustituya "collation_type_1" por "collation_type_2").

    Actualizar la base de datos fuente con el código

    Esta opción requiere que realmente entienda su sistema y que haya hecho copias de seguridad con antelación. El script le permitirá modificar la intercalación en el servidor de compilación para que sea 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 fuente con el IDE

    Si no te sientes cómodo ejecutando el código anterior, también puedes utilizar un IDE o una herramienta GUI que te permita cambiar manualmente los cotejos de las tablas, ya sea con sentencias SQL o a través de una interfaz. De nuevo, estas opciones requieren que conozcas bien tu sistema y que hayas hecho copias de seguridad con antelación.

    A continuación encontrará algunas instrucciones paso a paso fáciles de seguir para actualizar las colaciones a través de un IDE como phpMyAdmin:

    • phpMyAdmin
    • Declaraciones SQL
    • Banco de trabajo MySQL

    Consulte también:
    ¿Proveedores de alojamiento recomendados para Duplicator?
    http://dev.mysql.com/downloads/mysql
    https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade

    ¿Le ha resultado útil este artículo?

    Artículos relacionados