con mysql wordpress phpmyadmin cpanel

mysql con wordpress



# 1273-Cotejo desconocido: ''utf8mb4_unicode_ci'' cPanel (13)

Tengo una base de datos de WordPress en mi máquina local que quiero transferir a un phpMyAdmin alojado en cPanel. Sin embargo, cuando intento importar la base de datos al entorno, sigo recibiendo este error:

#1273 - Unknown collation: ''utf8mb4_unicode_ci''

He intentado buscar en Google y la única solución que puedo encontrar es este error phpmysql - # 1273 - # 1273 - Clasificación desconocida: ''utf8mb4_general_ci'' que, por ahora, no es de mucha ayuda. He intentado borrar las cookies pero todavía no funciona. ¡Por favor ayuda!


Así que resolví de esta manera, desde MySQL 5.6 a MySQL 5.5:

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql $ sed -i ''s/TYPE=InnoDB/ENGINE=InnoDB/g'' database_name.sql

(Opcional) Cree un archivo .sql.gz :

$ gzip database_name.sql

Explicación

$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql

Como se explica en esta answer , esto es solo el equivalente de estas opciones de phpMyAdmin: "Sistema de base de datos o servidor MySQL anterior para maximizar la compatibilidad de salida con:" menú desplegable seleccione "MYSQL 40" .

$ sed -i ''s/TYPE=InnoDB/ENGINE=InnoDB/g'' database_name.sql

Necesitamos esto, para resolver este problema:

ERROR 1064 (42000) en la línea 18: tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta que se usará cerca de ''TYPE = InnoDB'' en la línea 9


Después de mucho tiempo de investigación, he encontrado la solución para lo anterior:

  1. En primer lugar, cambia el valor predeterminado de wp-config.php> Base de datos DB_CHARSET a "utf8"

  2. Haga clic en la pestaña "Exportar" para la base de datos

  3. Haga clic en el botón de opción "Personalizado"

  4. Vaya a la sección titulada "Opciones específicas de formato" y cambie el menú desplegable "Sistema de base de datos o servidor MySQL anterior para maximizar la compatibilidad de salida con:" de NINGUNO a MYSQL40.

  5. Desplácese hasta la parte inferior y haga clic en Ir

Entonces estás en.


En mi caso resulta que mi
el nuevo servidor ejecutaba MySQL 5.5 ,
el servidor anterior ejecutaba MySQL 5.6 .
Así que recibí este error al intentar importar el archivo .sql que había exportado desde mi antiguo servidor.

MySQL 5.5 no es compatible con utf8mb4_unicode_520_ci , pero
MySQL 5.6 lo hace.

¡La actualización a MySQL 5.6 en el nuevo servidor resolvió el cotejo del error!

Si desea conservar MySQL 5.5, puede:
- haga una copia de su archivo .sql exportado
- reemplazar instancias de utf8mb4unicode520_ci y utf8mb4_unicode_520_ci
... con utf8mb4_unicode_ci
- Importe su archivo .sql actualizado.


Hay una línea en wp-config.php:

define(''DB_CHARSET'', ''utf8mb4'');

Si sigue las Markouver''s / Evster''s , no olvide cambiar esta línea en el servidor de producción a

define(''DB_CHARSET'', ''utf8'');

para arreglar caracteres rotos de 4 bytes


La forma más fácil de hacerlo es exportar su base de datos a .sql , abrirla en Notepad ++ y "Buscar y reemplazar" utf8mb4_unicode_ci a utf8_unicode_ci y también reemplazar utf8mb4 a utf8 . Además, no olvide cambiar la clasificación de la base de datos a utf8_unicode_ci (Operaciones> Clasificación).


Lo mejor que puede hacer es exportar su base de datos a .sql , abrirla en Notepad ++ y vaya a "Buscar y reemplazar". Luego pones "utf8mb4" en la búsqueda y "utf8" en el reemplazo. Reemplazará utf8mb4_unicode_ci por utf8_unicode_ci . Ahora vaya a su PhpMyAdmin (destino) y configure la intercalación DB en utf8_unicode_ci (Operaciones> utf8_unicode_ci ).


Parece que su host no proporciona una versión MySQL que sea capaz de ejecutar tablas con intercalación utf8mb4.

Las tablas de WordPress se cambiaron a utf8mb4 con la Versión 4.2 (lanzada el 23 de abril de 2015) para admitir Emojis, pero necesita MySQL 5.5.3 para usarlo. 5.5.3. es de marzo de 2010, por lo que normalmente debería estar ampliamente disponible. ¿Puedes comprobar si tu proveedor de alojamiento proporciona esa versión?

Si no es así, y no es posible una actualización, es posible que tenga que buscar otro proveedor de alojamiento para ejecutar las últimas versiones de WordPress (y siempre debe hacerlo por razones de seguridad).


También experimenté este problema. La solución que funcionó para mí fue abrir la base de datos local con Sequel Pro y actualizar la codificación y la clasificación a utf8 / utf8_bin para cada tabla antes de importar.


Tuve el mismo problema ya que todos nuestros servidores ejecutan versiones anteriores de MySQL. Esto se puede resolver ejecutando un script PHP. Guarde este código en un archivo y ejecútelo ingresando el nombre de la base de datos, el usuario y la contraseña, y cambiará la clasificación de utf8mb4/utf8mb4_unicode_ci a utf8/utf8_general_ci

<!DOCTYPE html> <html> <head> <title>DB-Convert</title> <style> body { font-family:"Courier New", Courier, monospace; } </style> </head> <body> <h1>Convert your Database to utf8_general_ci!</h1> <form action="db-convert.php" method="post"> dbname: <input type="text" name="dbname"><br> dbuser: <input type="text" name="dbuser"><br> dbpass: <input type="text" name="dbpassword"><br> <input type="submit"> </form> </body> </html> <?php if ($_POST) { $dbname = $_POST[''dbname'']; $dbuser = $_POST[''dbuser'']; $dbpassword = $_POST[''dbpassword'']; $con = mysql_connect(''localhost'',$dbuser,$dbpassword); if(!$con) { echo "Cannot connect to the database ";die();} mysql_select_db($dbname); $result=mysql_query(''show tables''); while($tables = mysql_fetch_array($result)) { foreach ($tables as $key => $value) { mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"); }} echo "<script>alert(''The collation of your database has been successfully changed!'');</script>"; } ?>


Wordpress 4.2 introdujo soporte para la codificación de caracteres "utf8mb4" por razones de seguridad , pero solo MySQL 5.5.3 y mayor soporte. La forma en que el instalador (y el actualizador) maneja esto es que comprueba su versión de MySQL y su base de datos se actualizará a utfmb4 solo si es compatible .

Esto suena muy bien en teoría, pero el problema (como has descubierto) es cuando estás migrando bases de datos de un servidor MySQL que admite utf8mb4 a uno que no lo hace. Si bien al revés debería funcionar, es básicamente una operación unidireccional.

Como señaló Evster, es posible que tenga éxito con la función "Exportar" de PHPMYAdmin. Use " Método de exportación: personalizado " y para el " Sistema de base de datos o servidor MySQL anterior para maximizar la compatibilidad de salida con: " seleccione " MYSQL 40 " desplegable.

Para una exportación de línea de comando usando mysqldump. Echa un vistazo a la bandera:

$ mysqldump --compatible=mysql4

Nota: Si hay caracteres de 4 bytes en la base de datos, se dañarán.

Por último, para cualquiera que use el popular complemento WP Migrate DB PRO, un usuario en este hilo de Wordpress.org informa que la migración siempre se maneja correctamente, pero no pude encontrar nada oficial.

El complemento WP Migrate DB traduce la base de datos de una clasificación a otra cuando mueve 4.2 sitios entre hosts con MySQL pre o post 5.5.3

En este momento, no parece haber una forma de cancelar la actualización de la base de datos. Entonces, si está utilizando un flujo de trabajo en el que está migrando un sitio desde un servidor o localhost con MySQL> 5.5.3 a uno que usa una versión anterior de MySQL, es posible que no tenga suerte.


Yo uso esto en Linux:

sed -i ''s/utf8mb4/utf8/g'' your_file.sql sed -i ''s/utf8_unicode_ci/utf8_general_ci/g'' your_file.sql sed -i ''s/utf8_unicode_520_ci/utf8_general_ci/g'' your_file.sql

luego restaure your_file.sql

mysql -uyourdbuser -pyourdbpasswd yourdb < your_file.sql


abra el archivo sql en Notepad ++ y ctrl + H. Luego ponga " utf8mb4 " en la búsqueda y " utf8 " en el reemplazo. El problema se solucionará entonces.


La técnica en esta publicación funcionó para mí

1) Haga clic en la pestaña "Exportar" para la base de datos

2) Haga clic en el botón de opción "Personalizado"

3) Vaya a la sección titulada "Opciones específicas de formato" y cambie el menú desplegable "Sistema de base de datos o servidor MySQL anterior para maximizar la compatibilidad de salida con:" de NINGUNO a MYSQL40.

4) Desplácese hasta la parte inferior y haga clic en "IR".

No estoy seguro de si hacer esto causa alguna pérdida de datos, sin embargo, una vez que lo intenté no noté ninguno. Tampoco nadie que respondió en los foros vinculados anteriormente.

Editar 12/08/16 - Creo que exportar una base de datos de esta manera me hace perder datos guardados en los widgets de Black Studio TinyMCE Visual Editor , aunque no he realizado varias pruebas para confirmar.