Ayer por la tarde, tras tomar las debidas precauciones (copia de seguridad de todos los archivos y dos copias de la base de datos, por si acaso), actualicé el blog a la versión 2.5.1 de WordPress. Seguí con todo cuidado el procedimiento habitual (o al menos eso es lo que yo creía), pero tras ejecutar el script de actualización me encontré con un mensaje de error relacionado con los widgets. Tras una rápida consulta a los foros de WordPress, vi que se podía resolver el problema borrando el registro correspondiente en la tabla wp_options, y así lo hice. El mensaje de error en la cabecera del blog desapareció.
Pero aquí no acababan los sustos. Al volver al frontend del blog, para ver cómo había quedado tras la actualización, me quedé de piedra: la codificación de los caracteres se había trastornado, y todas las vocales con tilde, las eñes y ciertos signos de puntuación (signos de abrir interrogación y admiración, guiones, comillas, etc.) habían sido sustituidos por caracteres ajenos a la codificación original. Enseguida me di cuenta de la gravedad del caso, y empecé a buscar cómo solucionar el problema. No voy a aburrir a la concurrencia relatando mis zozobras con los ficheros SQL, los scripts para modificar los cotejamientos de la base de datos y demás monstruosidades. Al final, después de más de seis horas de esfuerzos inútiles, decidí tirar por la calle de en medio y proceder a un downgrade, es decir, volver a la versión anterior de WordPress.
La vuelta atrás ha funcionado, pero no del todo. La operación sobre la base de datos que he descrito en el primer párrafo ha hecho que los widgets de texto no se puedan editar, y ademas ha provocado que desaparezcan todos los widgets que soportan múltiples instancias. Más vale que la mayoría de las operaciones sobre las diversas barras laterales de mi blog están realizadas con el plugin MyCustom Widgets, lo cual me permite prescindir de los widgets de texto nativos de WordPress, porque si no estaría vendido.
Tras devanarme los sesos buscando la causa del problema con el cotejamiento de la base de datos, creo que ya lo he identificado. De hecho, el caso está perfectamente documentado en el Codex de WordPress, pero, como suele suceder en estos casos, no había leído la advertencia. Resulta que el fichero config.php de las nuevas versiones de WordPress añade a las variables de configuración un par de líneas:
define('DB_CHARSET', 'utf8'); define('DB_COLLATE', '');
Si se utiliza un config.php con estas líneas en la actualización de un blog creado con alguna versión anterior a la 2.2, el resultado es que se pierde el cotejamiento original, con los problemas consiguientes.
En fin, de todo se aprende, y mi experiencia le vendrá bien a algún colega de afición bloguera para escarmentar en cabeza ajena. Lo malo es que mi blog probablemente se halle en un estado inestable, con errores e inconsistencias (si algún visitante las descubre, me hará un gran favor informándome de su existencia), lo cual me obliga a plantearme una solución radical, que seguramente pasa por una instalación ex novo y la importación del fichero XML resultante de exportar el contenido íntegro de la bitácora. No es una solución que me apasione, pues no está exenta de problemas, pero al menos me servirá para limpiar el blog y librarme de la basura acumulada en estos tres años de andadura.
Mario A. Núñez Molina dice
Eduardo;
Confronté este problema al actualizar uno de mis blogs menores a la versión 2.5. Después de un tiempo tratando de resolver el asunto encontré que si cambio utf8 a ut-f8, el problema desaparece. También, resuelvo subiendo el wp-config anterior.
Eduardo Larequi dice
¿Dónde hay que hacer el cambio de utf8 a ut-f8? ¿En las opciones de WordPress o en el fichero de configuración?
judas dice
Yo no he sufrido esos problemas, seguramente porque he ido actualizando poco a poco cada vez. Además, no uso widgets sino funciones en php directamente en el sidebar (mucho mejor, más flexible y controlas la maquetación de lujo).
Pero el blog de un colega que «hosteo» necesita una actualización desde una versión bastante anterior. Tendré en cuenta esto que comentas, gracias.
Mario A. Núñez Molina dice
Eduardo;
Es en el fichero de configuración.
serenus dice
En que líos os metéis los que sabéis de estas cosas!
Después de más de un año de «bloguear» me suena a chino eso de «no uso widgets sino funciones en php directamente en el sidebar» ¿Eso no lo diréis mientras tomáis chiquitos en la barra del bar?
Un saludo. Y a ver si nos comentas una peli o una novela.
Eduardo Larequi dice
No pierdas cuidado por la tecnocháchara, Serenus. Tengo en el horno una reseña de un par de novelas del recientemente fallecido Arthur C. Clarke, y desde luego no perderé la oportunidad de comentar el último Indiana Jones.
judas dice
Bueno, es que esas entradas también las leeré, por supuesto. De Clarke, qué lujo.
Un saludo.