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!
mysql
wordpress
phpmyadmin
cpanel
Wairimu Murigi
fuente
fuente
Respuestas:
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
autf8/utf8_general_ci
fuente
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
o la respuesta a continuación es una mejor opción. No creo que sea una buena idea cambiar algo como esto en un sitio en vivo. Es mejor exportar en el formato correcto, o si esa no es una opción, edite el archivo exportado.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 8/12/16 : creo que exportar una base de datos de esta manera me hace perder los datos guardados en los widgets de Black Studio TinyMCE Visual Editor , aunque no he realizado varias pruebas para confirmar.
fuente
Si ya ha exportado un
.sql
archivo, lo mejor que puede hacer es buscar y reemplazar lo siguiente si los tiene en su archivo:utf8mb4_0900_ai_ci
autf8_unicode_ci
utf8mb4
autf8
utf8_unicode_520_ci
autf8_unicode_ci
Reemplazará
utf8mb4_unicode_ci
autf8_unicode_ci
. Ahora vaya a su cPanel phpMyAdmin y configure la intercalación de DB autf8_unicode_ci
través de Operaciones> Intercalación .Si está exportando a
.sql
, es mejor cambiar el formato de cómo está exportando el archivo. Echa un vistazo a la respuesta de Evster (está en la misma página que esta)fuente
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Esto encontrará todas las aparicionesutf8mb4
en FILE_NAME y lo reemplazaráutf8
mientras guarda una copia del archivo original en FILE_NAME.bak. Es posible que deba ajustarlo para especificar la coalición exacta en su caso, pero esto es un comienzo :)vi dump.sql
y luego en medio de hacer esto::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
conutf8_unicode_ci
Yo uso esto en Linux:
luego restaure your_file.sql
fuente
sed -i '' ....
funcionased -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
Wordpress 4.2 introdujo el soporte para la codificación de caracteres "utf8mb4" por razones de seguridad , pero solo MySQL 5.5.3 y mayores lo admiten. 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:
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.
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.
fuente
TYPE=MyISAM
que se eliminó en la v5.1. Haga una búsqueda y reemplace conENGINE=MyISAM
. No pude evitar esto usando lasmysqldump
opciones de salida.En mi caso, mi
nuevo servidor se estaba ejecutando
MySQL 5.5
, elantiguo servidor se estaba ejecutando
MySQL 5.6
.Así que recibí este error al intentar importar el
.sql
archivo que había exportado desde mi antiguo servidor.MySQL 5.5 no es compatible
utf8mb4_unicode_520_ci
, peroMySQL 5.6 sí.
¡La actualización
MySQL 5.6
en el nuevo servidor resolvió la intercalación del error!Si desea conservar MySQL 5.5, puede:
- hacer una copia de su
.sql
archivo exportado- reemplazar instancias de
utf8mb4unicode520_ci
yutf8mb4_unicode_520_ci
... con
utf8mb4_unicode_ci
- importar su
.sql
archivo actualizado .fuente
mysql-server-5.6
paquete que puede instalar que eliminará 5.5 automáticamente).Hay una línea en wp-config.php:
Si sigue las instrucciones de Markouver / Evster , no olvide cambiar esta línea en el servidor de producción a
para arreglar caracteres rotos de 4 bytes
fuente
define('DB_COLLATE', 'utf8_general_ci');
también. Esto me ayudó.Después de mucho tiempo de investigación, he encontrado la solución para lo anterior:
En primer lugar, cambia el valor predeterminado de wp-config.php> Base de datos DB_CHARSET a "utf8"
Haga clic en la pestaña "Exportar" para la base de datos
Haga clic en el botón de opción "Personalizado"
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.
Desplácese hasta la parte inferior y haga clic en ir
Entonces estás en.
fuente
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 proporciona esa versión?
De lo contrario, y no es posible una actualización, es posible que deba buscar otro proveedor de alojamiento para ejecutar las últimas versiones de WordPress (y siempre debe hacerlo por razones de seguridad).
fuente
Así que resolví de esta manera, desde MySQL 5.6 a MySQL 5.5:
(Opcional) Cree un
.sql.gz
archivo:Explicación
Como se explica en esta respuesta , 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" .
Necesitamos esto, para resolver este problema:
fuente
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Si desea conservar una copia comodatabase_name.sql.bak
antes del reemplazo de sed:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
opciónTambié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.
fuente
La forma más fácil de hacerlo es exportar su base de datos a
.sql
, ábrala en Notepad ++ y "Buscar y reemplazar"utf8mb4_unicode_ci
autf8_unicode_ci
y también reemplaceutf8mb4
autf8
. Además, no olvide cambiar la clasificación de la base de datos autf8_unicode_ci
(Operaciones> Clasificación).fuente
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.fuente