Hoy un breve post sobre los errores al importar una base de datos de MySQL 5.6 a un servidor con MySQL 5.5. Últimamente cada vez nos estamos encontrando este caso más veces y la solución es simple.
La versión 5.5 de MySQL no soporta la codificación utf8mb4_unicode_520_ci
sino que solo soporta la utf8mb4_unicode_ci
.
Si importamos una web en Plesk con MySQL 5.5 desde un servidor con MySQL 5.6, nos dará el siguiente error:
Restoration Task April 15, 2018 05:08 PM Details Warning: Restore domain "domain.com" Execution of /opt/psa/admin/plib/api-cli/domain.php --update domain.com -guid e637980dff30 -creation-date 2017-01-10 -hosting true -hst_type phys -do-not-apply-skeleton -www-root httpdocs -ignore-nonexistent-options failed with return code 1. Stderr is An error occurred during domain update: Command options error: "-ip" option is required for "-hosting" option
Este error al final e investigando un poco es debido a que no puede importar la base de datos por un error de la codificación (aunque ahí eso no lo diga en ningún lado). Pero haciendo pruebas llegamos a esa conclusión.
Para poder importar la base de datos de MySQL 5.6 con codificación XXX en MySQL 5.5 con codificación YYY solamente hay que bajarse la base de datos, descomprimirla (si está comprimida) y reemplazar lo siguiente:
utf8mb4_unicode_520_ci
con
utf8mb4_unicode_ci
Y entonces la podemos volver a comprimir (si lo estaba antes) y subirla al servidor que la importará sin problemas y todo funcionará correctamente (aunque pueda parecer raro por el tema de cambio de codificación.
Si queréis algo más de información sobre las diferencias os dejo este texto en inglés de StackOverFlow:
For Unicode, collation names may include a version number to indicate the version of the Unicode Collation Algorithm (UCA) on which the collation is based. UCA-based collations without a version number in the name use the version-4.0.0 UCA weight keys. For example:
utf8_unicode_ci (with no version named) is based on UCA 4.0.0 weight keys >(http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt).
utf8_unicode_520_ci is based on UCA 5.2.0 weight keys (http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt).
For Unicode, the xxx_general_mysql500_ci collations preserve the pre-5.1.24 ordering of the original xxx_general_ci collations and permit upgrades for tables created before MySQL 5.1.24. For more information, see Section 2.11.3, “Checking Whether Tables or Indexes Must Be Rebuilt”, and Section 2.11.4, “Rebuilding or Repairing Tables or Indexes”.
Source : https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html
¡Buen fin de semana!