Solucionar problemas
Joomla 1.0 y 1.5 con MySQL 8, error con la palabra reservada «groups»
Joomla 1.0 y 1.5 llevan muchos años sin actualizaciones de seguridad. Este arreglo sirve para mantener en marcha un proyecto antiguo mientras preparas su migración a una versión actual, no como solución definitiva.
Los problemas de un Joomla antiguo suelen venir de dos sitios. El primero es PHP, y se resuelve eligiendo en cPanel la versión de PHP que necesita la web. El segundo es MySQL: Joomla 1.0 y 1.5 funcionan bien con MySQL 5.7, pero fallan con MySQL 8.
Por qué falla con MySQL 8
MySQL 8 añadió nuevas palabras reservadas, palabras que no se pueden usar en una consulta SQL como nombre de columna o alias si no van entre comillas invertidas (`).
En Joomla el problema es la palabra groups, que antes estaba permitida y en MySQL 8 es reservada. Aparece en consultas de estos ficheros:
components/com_content/models/section.php components/com_content/models/article.php components/com_content/models/frontpage.php components/com_content/models/category.php
Las consultas afectadas contienen AS groups, por ejemplo:
...u.usertype, cc.title AS category, g.name AS groups...
Solución: escapar «groups» con comillas invertidas
Haz antes una copia de la carpeta components/com_content (por ejemplo, comprímela desde el administrador de archivos de cPanel).
Abre cada uno de los ficheros anteriores y pon groups entre comillas invertidas en todas las coincidencias:
...u.usertype, cc.title AS category, g.name AS `groups`...
Guarda y repite en todos los ficheros. Con eso Joomla ya funciona con MySQL 8.
Hacerlo desde la terminal
Si tienes acceso a la Terminal de cPanel o por SSH, entra en la carpeta de Joomla y busca todos los ficheros con coincidencias:
find . -name "*.php" -type f -print0 | xargs -0 grep -l 'AS groups'
Y corrígelos todos de una vez:
find . -name "*.php" -type f -exec sed -i 's/g\.name AS groups/g.name AS `groups`/g' {} \;
Vuelve a lanzar la búsqueda: si aún sale algún fichero, es que usa la palabra con otro alias distinto de g.name. Ábrelo y corrígelo a mano igual que arriba.
Comprobar que funciona
Abre la portada, una sección, una categoría y un artículo. Si sigue apareciendo un error SQL, copia el mensaje completo: si menciona otra palabra cerca de near '...', búscala en la lista de palabras reservadas de MySQL 8 y escápala de la misma forma. Si el error menciona otra extensión (por ejemplo, un componente de terceros), la corrección va en sus ficheros, dentro de components/ o modules/.
También te puede ayudar
- Conflicto con la tabla «system» de Drupal en MySQL 8 (error 1064) Soluciona el error 1064 de Drupal 6 y 7 con MySQL 8 por la tabla system, palabra reservada: actualiz...
- PrestaShop: «An exception occurred while establishing a connection to figure out your platform version» Solución al error SQLSTATE[HY000] [2026] SSL_CTX_set_default_verify_paths failed al instalar o actua...
- Tablas corruptas en una base de datos MySQL Confirma el error y motor de una tabla antes de repararla, conserva una copia y evita aplicar REPAIR...
- Algunas bases de datos no aparecen en phpMyAdmin Comprueba si la base pertenece a la cuenta y solicita la revisión de permisos o del mapa de cPanel c...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.