Relanzar 4.2 utf8mb4 actualización de base de datos

14

Actualicé WP a 4.2 mientras estaba en un servidor antiguo, que no cumple con los requisitos de actualización utf8mb4 .

Me mudé a otro servidor que cumple con estos requisitos, pero WP ya no lanzará esta actualización de la base de datos: dice /wp-admin/upgrade.php Your WordPress database is already up-to-date. Traté de configurar mi wp_posttabla en utf8mb4 manualmente, pero todos mis caracteres especiales se convirtieron en " ".

¿Alguna forma de forzar el lanzamiento maybe_convert_table_to_utf8mb4en una actualización simple, sin perder todos mis caracteres especiales?

¡Gracias!

Joan
fuente

Respuestas:

5

Creo que la respuesta a su pregunta en este momento es "No".

No hay una manera fácil de activar los maybe_convert_table_to_utf8mb4sitios una vez que ya se actualizaron más allá de WP 4.3 en un servidor que no cumplió con los requisitos establecidos en esta publicación:

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/

Tenga en cuenta que, basándose en mirar el código fuente de WP, parece que movieron esto de la secuencia de actualización de 4.2 a 4.3 (ya no está presente en 4.2, que ahora no tiene actualizaciones en absoluto), tal vez con la esperanza de obtener más usuarios a bordo.

Entonces esa es su respuesta y apesta, pero es más precisa que las otras ¯_ (ツ) _ / ¯

Actualmente estamos trabajando en crear un script simple que le permita activar la esencia de la secuencia de actualización basada en un gancho de acción. Si podemos mantenerlo estable y funcionando, intentaremos volver y compartirlo aquí para que otros lo usen.

Nuestro plan básico es extraer la parte real de db upgrade_430(), aislarla del sistema de actualización de db y activarla manualmente.

EDITAR: SOLUCIÓN ABAJO

Si bien no hay una manera fácil de activar el script, aquí hay una solución alternativa codificada a mano, basada en upgrade_430()pero diseñada como un complemento.

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

Puede poner esto en un complemento o simplemente pegarlo en functions.php. De cualquier manera, debería ser TEMPORAL.

Está configurado para activarse automáticamente cuando visita https://yoursite.com/?update-utf8bm4=1

Esto garantiza que solo se ejecute una sola vez y que pueda elegir cuándo (para bases de datos grandes puede llevar un tiempo y no desea que nadie edite una publicación mientras está sucediendo).

Si no desea tener el disparador GET, simplemente quite la add_actionparte y la if (!isset($_GET['update-utf8bm4']))parte.

Nuevamente: QUITE ESTO CUANDO COMPLETE, no desea dejar un activador GET como este por ahí :)

jerclarke
fuente
2

Por supuesto, si no hace falta decir, haga una copia de seguridad de la base de datos antes de intentar cualquier cosa, pero trabajaría con la versión original de la base de datos: probaría dos cosas: reparación y mantenimiento de la base de datos de WordPress y tablas de optimización de phpMyAdmin:

Esto vino de esta página, que tiene mucha información WP Knowledgebase , pero comienza agregando esta línea al wp-config.php de su sitio:

define('WP_ALLOW_REPAIR', true);

luego vaya a http://yoursite.com/wp-admin/maint/repair.php

Debería ver una página con dos opciones: 'Reparar base de datos' y 'Reparar y optimizar base de datos'.

Haga clic en 'Reparar y optimizar la base de datos' y dé tiempo al script para que se ejecute. Una vez que se hayan ejecutado correctamente, recibirá mensajes de actualización que le permitirán conocer el estado de varias tablas.

Tan pronto como se haya ejecutado, muy importante , elimine la línea wp_allow_repair que acaba de agregar a wp-config.php, elimínela del archivo wp-config.php.

Si eso no funciona, puede probar la optimización de la tabla de phpMyAdmin, pero si WordPress no ayudó, eso tampoco puede funcionar. Lo probaría en la misma versión de la base de datos en la que ejecutó la última reparación.

Vaya a phpMyAdmin, seleccione su base de datos, desplácese hasta la parte inferior de la página, marque 'Verificar todo' para seleccionar todas las tablas en la base de datos, luego seleccione "Optimizar tabla" en el menú de selección al lado. Eso es todo, se iniciará automáticamente.

Aquí hay más detalles y capturas de pantalla: WPMUDev

Si esos dos pasos no funcionan, solos o juntos, puede intentar usar otra copia de su base de datos de respaldo para ejecutarlos en el orden inverso ... ¡Buena suerte!

Vanessa King
fuente
1
¿Repara y optimiza la base de datos? relanzar maybe_convert_table_to_utf8mb4(como lo hace cualquier actualización de WP)? No mencionaste eso en la respuesta;)
Joan
Hola Joan, perdón por el descuido ... No he visto ninguna mención específica en las notas, no, pero supongo que lo haría si pudiera, siempre que ejecutaras la optimización en WordPress 4.2+. De las notas principales: [ make.wordpress.org/core/tag/wpdb/]
Vanessa King
Tenía todas las tablas UTF8 y ejecuté la reparación y optimización. No los convirtió a utf8mb4. También las tablas que no eran MyIsam sino InnoDB y ya utf8mb4 no fueron reparadas u optimizadas.
Rhand
Sí, esta no es una respuesta a la pregunta, lo siento.
jerclarke el
0

¿Has intentado cambiar la clasificación de la tabla de base de datos? Por favor intente esto:

Inicie sesión en phpmyadmin> seleccione su base de datos> Operaciones> ahora cambie Colación del menú desplegable a "utf8mb4_unicode_ci" o cambie a lo que se utilizó en su servidor anterior.

Espero que funcione para ti.

ver captura de pantalla: http://prntscr.com/8ip1ro/direct

Recuerde: si exporta un archivo sql desde su servidor anterior a su PC y lo abre con cualquier editor de texto ... y lo personaliza y guarda ... luego, verifique cuando guarde el archivo sql El editor de texto "Codificación" es Utf-8 ... mira mi captura de pantalla: http://prntscr.com/8ip2nr/direct

Gracias

NoDiv_NoClass
fuente
Esto es lo que probé (también) como si estuviera iniciando la función, los mismos resultados (en todas partes). Buscando una manera de relanzar fácilmente la función WP ...
Joan