Clicky

Cómo actualizar a Joomla 4 y no morir en el intento (parte I)

Migración/actualización a Joomla 4

Preparando el escenario: Una actualización limpia de Joomla 3.10.1 a Joomla 4.0.2

Solución al error 1048 Column 'checked_out' cannot be null

Me echo a temblar cada vez que Joomla! lanza una gran actualización de su Sistema de Gestión de Contenidos (CMS). La pasada semana Joomla! lanzó varias actualizaciones para la serie 3.10 y para la versión principal Joomla 4 corrigiendo varios errores que se producían en el backend (Panel de Control del Administrador). Anteriormente había lanzado la versión principal de Joomla 4 y la versión "puente" hacía ella, la 3.10.0. El 24 de agosto lanzó una nueva versión de Joomla 4, la 4.0.2 para corregir un error que se introdujo en el componente de actualización de Joomla (paquete com_joomlaupdate), rompiendo actualizaciones a partir de 4.0.1.

Yo he intentado durante este tiempo actualizar de Joomla 3.10.1 a Joomla 4.0.2 si ningún éxito, llegando incluso a aparecer en varias ocasiones la nueva pantalla roja de la muerte:

Pantalla roja de la muerte en Joomla 4 error 500

En este primer artículo vamos a instalar primero la versión 3.10.1 de Joomla para luego hacer la actualización a Joomla 4 y ver que problemas se presentan.

Instalación de Joomla 3.10.1

Joomla 3.10.1 es una versión "puente" para actualizar a Joomla 4. Nos dice que plugins, componentes, plantillas y módulos son o no compatibles con Joomla 4. Aquí vamos a instalar Joomla 3.10.1 desde el repositorio original de Joomla.

Para ello descargamos los archivos comprimidos de nuestra elección, los descomprimimos y los subimos al servidor como tengáis costumbre. Al acceder a la URL del sitio (en mi caso un sitio web que tengo exclusivamente para pruebas), nos aparecerá la primera pantalla de instalación:

instalación de Joomla 3.10.1

Rellenamos los datos que consideremos oportunos y pulsamos en siguiente:

instalación de Joomla 3.10.1

En esta pantalla escribiremos los datos que se nos pide:

Tipo de base de datos: Normalmente será MySQLi
Hospedaje: Normalmente se dejará en localhost
Usuario: El usuario propietario de la base de datos
Contraseña: La contraseña del usuario de la base de datos
Base de datos: El nombre de la base de datos
Prefijo de las tablas: Importante!. Como lo que vamos a realizar posteriormente es una migración desde otro sitio web que ya dispone de un prefijo de tablas escribiremos el mismo prefijo de tablas que usa ese sito para no tener que cambiarlo posteriormente.
Proceso para una base de datos antigua: Podremos elegir indistintamente si Respaldar en el caso de que queráis conservar las tablas antiguas, o Borrar para eliminar todas las tablas existentes en la base de datos.

Cuando acabemos pinchamos en Siguiente y aparecerá esta pantalla:

instalación de Joomla 3.10,1

Aquí hay varias opciones para la instalación. Cómo lo que queremos es que existan artículos, categorías y menús como ya tenemos en el sitio que queremos migrar, en Instalar los datos de ejemplo elegiremos "Datos de ejemplo tipo blog en inglés (GB)". Yo no voy a instalar ahora un sitio multiidioma porque esto se puede hacer posteriormente cuando ya esté instalado Joomla.

En Configuración del correo electrónico podemos elegir SI y recibiremos en nuestro email los datos de la instalación.

La última parte es una comprobación de que nuestro sistema admite la instalación de Joomla (Deberían estar todos los test en verde, pinchar en la imagen de arriba para ver la pantalla completa). Pinchamos en Instalar y se lanzará la instalación:

instalando Joomla 3.10.1

La última pantalla nos informa que la instalación ha llegado a buen término y que debemos eliminar la carpeta "Installation" (Yo no suelo eliminarla, la renombro por si hay algún error y necesito hacer otra instalación y así no tener que subirla de nuevo al servidor)

instalación Joomla 3.10.1 completada

Una vez hecho el último paso, nos podemos acceder a la administración pinchando en el botón azul que dice "Administración". Después de introducir nuestras credenciales de acceso, este sería el aspecto del Panel de Control de Joomla 3.10.1

panel de control de Joomla 3.10.1

Y aquí podemos ver la apariencia del sitio en vivo (cómo los artículos no tienen imágenes, el sitio se ve un poco cutre. Pero nos da igual porque es un paso necesario para nuestros propósitos).

página principal de Joomla 3.10.1

Actualización a Joomla 4

Ahora vamos a actualizar a Joomla 4 desde esta instalación de Joomla 3.10.1. Es conveniente que reviséis los registros de error (logs) de vuestro servidor por si hubiese algo que estuviera mal.

Como he dicho antes Joomla 3.10.1 ofrece un chequeo de compatibilidad con Joomla 4. Para ello debemos hacer un cambio en el componente de Actualización de Joomla:

opciones de actualización de Joomla 3.10.1

Una vez dentro marcaremos la opción "Nuevo Joomla" y pincharemos en "Guardar y cerrar" (Importante!)

Joomla 3.10.1 actualización desde nuevo Joomla

Nos aparecerá la pantalla Pre-Update Check for Joomla 4.0.2

Joomla 3.10 Pre-Update Check

Cómo vemos, al ser una instalación limpia de Joomla 3.10.1 sin ningún componente de terceros, no aparece ningún aviso de incompatibilidad como hemos visto que aparecían en nuestro anterior artículo. Si pinchamos en la pestaña "Live update" de esta misma pantalla veremos que podemos lanzar la actualización a Joomla 4:

Joomla 3.10.1 Live Update

Lo hacemos pinchando en "Install the Update" que lanzará la actualización:

Joomla 3.10 instalando Joomla 4

Aquí he tenido un problema dado que el servidor me ha dado un error 503 Service unavailable de MySQL (en otras pruebas también había tenido el mismo error al actualizar a Joomla 4) y el Panel de control presentaba el siguiente error:

Table 'migracion.n9tmg_history' doesn't exist

Joomla 4 error

Para solucionar esto es necesario ir al menú de la izquierda, abrir "System" y en la ficha "Maintenance" de la derecha abrir "Database":

Joomla 4 check in

Aparecen las tablas que necesitarían actualizar su estructura. Marcado la casilla de los errores y pinchando en el botón de arriba a la izquierda "Update Structure" los errores deben desaparecer.

Joomla 4 Update structure

Para comprobar que todo está correcto podemos navegar un poco por la página en vivo y comprobar que en el registro de errores del servidor (logs) no exista ninguno. Además la página "System" → "Database" debe tener la apariencia de la imagen de arriba.

Joomla 4 System Database

Este sería la apariencia del Panel de control de Joomla 4 una vez acabada la instalación:

panel de control de Joomla 4

Y esta sería la apariencia del sitio en vivo:

Joomla 4 template Cassiopeia

Error 1048 Column 'checked_out' cannot be null solucionado

Al realizar una comprobación de edición de un artículo, al guardar el artículo me salta este error:

An error has occurred.
1048 Column 'checked_out' cannot be null

Joomla 4 error en la tabla _content

He intentado corregirlo modificando algunos registros de la base de datos pero infructuosamente. Después de poner un ticket en el foro de Joomla a ver si alguien sabía como solucionarlo el usuario Per Yngve Berg me dio la solución en este enlace.

La solución está en cambiar la columna checked_out en la estructura de la tabla #_content para permitir NULL. Para ello abrimos PhpMyAdmin y en la tabla #_content pinchamos en estructura:

PhpMyAdmin estructura de la tabla _content

Nos dirigimos a checked_out y pinchamos en cambiar:

PhpMyAdmin estructura checked_out

En la columna Predeterminado cambiamos el valor que tenga a NULL y pinchamos en el botón de Guardar:

PhpMyAdmin estructura checked_out null

Con esto se arregla el Error 1048 Column 'checked_out' cannot be null.

De cualquier forma, como veremos en artículos posteriores de esta serie, en la migración/actualización manual a Joomla 4 nos vamos a encontrar con varios errores de este tipo que será necesario corregir en la base de datos para que las tablas y los campos de ellas estén de acuerdo con la estructura de tablas en Joomla 4.

Jesus_Caceres