Errores comunes en bases de datos de PrestaShop y cómo solucionarlos
Cuando tu tienda PrestaShop empieza a mostrar mensajes de error inesperados, la pantalla se vuelve blanca o los productos no se cargan, lo más probable es que el problema esté en la base de datos. Los errores en la base de datos de PrestaShop son más comunes de lo que crees y, por suerte, la mayoría tienen solución. En esta guía extensa, te explicaré los errores más frecuentes relacionados con MySQL en PrestaShop, por qué ocurren y, lo más importante, cómo solucionarlos paso a paso. No necesitas ser un experto técnico, solo seguir estas instrucciones con calma.
[INFO] Todos los comandos y pasos que verás están pensados para usuarios sin experiencia técnica. Si tienes dudas, siempre puedes consultar con tu proveedor de hosting o con el panel de control Syspanel (accesible por el puerto 2106).
¿Por qué ocurren los errores de base de datos en PrestaShop?
PrestaShop utiliza MySQL como motor de base de datos. Aquí se almacenan todos los datos de tu tienda: productos, clientes, pedidos, configuraciones, etc. Cuando algo falla en esta estructura, tu tienda deja de funcionar correctamente. Las causas más habituales son:
- Cortes de energía o apagados bruscos del servidor. Una caída mientras se escribe en la base de datos puede dejar tablas incompletas o corruptas.
- Actualizaciones fallidas de PrestaShop o módulos. Si una actualización se interrumpe, los cambios en la estructura de la base de datos pueden quedar a medias.
- Espacio en disco insuficiente. Si el disco del servidor se llena, la base de datos no puede escribir nuevos datos y se corrompe.
- Versiones incompatibles de PHP y MySQL. Usar una versión de PHP muy antigua o muy nueva con tu PrestaShop puede generar conflictos.
- Ataques o inyecciones SQL. Aunque es menos común, un ataque malicioso puede dañar tablas específicas.
- Errores humanos. Modificar directamente la base de datos desde phpMyAdmin sin saber lo que se hace es una de las causas más frecuentes.
[WARNING] Nunca modifiques la base de datos directamente si no estás seguro de lo que haces. Siempre haz una copia de seguridad antes de cualquier cambio.
Error 1: "Table 'ps_product' doesn't exist" o "Table 'ps_product_lang' is marked as crashed"
Este es, con diferencia, el error más común. Aparece cuando una tabla de la base de datos se ha corrompido (dañado) o ha desaparecido. Puede afectar a tablas como ps_product, ps_category, ps_customer o cualquier otra.
¿Cómo identificarlo?
Verás un mensaje como este en la pantalla de tu tienda o en el archivo de logs:
Fatal error: Uncaught exception 'PrestaShopException' with message 'Table 'tu_tienda.ps_product' doesn't exist'
O también:
Table 'ps_product_lang' is marked as crashed and should be repaired
Solución paso a paso para reparar tablas corruptas
- Accede a tu panel de control Syspanel. Abre tu navegador y escribe
https://tudominio.com:2106. Inicia sesión con tus credenciales de hosting. - Busca la herramienta de bases de datos. Dentro de Syspanel, busca la sección "Bases de datos" o "phpMyAdmin". Haz clic en el icono de phpMyAdmin para abrirlo.
- Selecciona tu base de datos. En el panel izquierdo de phpMyAdmin, verás una lista de bases de datos. Haz clic en la que corresponde a tu PrestaShop (suele tener un nombre similar a
tudominio_prestashop). - Revisa el estado de las tablas. Verás una lista de tablas (ps_product, ps_cart, etc.). Para saber si alguna está corrupta, busca en la parte inferior de la pantalla el enlace "Revisar tablas" o "Check table". Si no lo ves, puedes seleccionar todas las tablas (marca la casilla "Seleccionar todo") y en el menú desplegable "Con selección:" elige "Revisar tabla". phpMyAdmin te mostrará un resultado. Si ves "error" o "crashed" en la columna "Msg_text", esa tabla está corrupta.
- Repara las tablas dañadas. Vuelve a seleccionar las tablas que dieron error (o todas si quieres asegurarte) y en el menú desplegable elige "Reparar tabla". phpMyAdmin ejecutará el comando
REPAIR TABLEy, en unos segundos, deberías ver el mensaje "OK" en todas ellas. - Verifica la tienda. Vuelve a cargar tu tienda PrestaShop. Lo más probable es que el error haya desaparecido.
[TIP] Si no tienes acceso a Syspanel o phpMyAdmin, puedes pedir a tu proveedor de hosting que ejecute el comando
REPAIR TABLEdesde la línea de comandos. Ellos pueden hacerlo en segundos.
Error 2: "MySQL server has gone away"
Este error suele aparecer cuando el servidor de base de datos se desconecta inesperadamente. Puede deberse a un tiempo de espera (timeout) demasiado corto, a un paquete de datos muy grande (por ejemplo, al importar un CSV enorme) o a un corte de conexión.
Soluciones prácticas
- Aumenta el tiempo de espera de MySQL. Si tienes acceso a la configuración de MySQL (a través de Syspanel o del archivo
my.cnf), busca la líneawait_timeouty cámbiala a un valor más alto, por ejemplo300(5 minutos). Si no sabes cómo hacerlo, pide ayuda a tu hosting. - Divide las importaciones grandes. Si estás importando productos o clientes mediante un CSV, no intentes importar 10.000 registros de una sola vez. Divide el archivo en lotes de 500 o 1.000 registros.
- Revisa los logs del servidor. En Syspanel, busca la sección "Logs" o "Registros". Allí podrás ver el error exacto que causó la desconexión. A menudo, el problema es un plugin o módulo que hace consultas muy pesadas.
[WARNING] Si el error aparece justo después de instalar un módulo nuevo, desactívalo inmediatamente. Ese módulo podría estar haciendo consultas ineficientes que saturan la base de datos.
Error 3: "Duplicate entry 'X' for key 'PRIMARY'"
Este error es muy común al intentar duplicar un producto o al importar datos. Significa que estás intentando insertar un registro con un ID (identificador único) que ya existe en la tabla. Es típico cuando se hacen copias de seguridad y restauraciones incompletas.
¿Cómo solucionarlo?
- Identifica la tabla y el valor duplicado. El mensaje de error te dirá algo como:
Duplicate entry '123' for key 'PRIMARY'. El '123' es el ID que ya existe. La tabla suele serps_product,ps_categoryops_customer. - Accede a phpMyAdmin (desde Syspanel, puerto 2106).
- Busca el registro duplicado. Ve a la tabla mencionada (ej.
ps_product) y busca el registro con el ID '123'. Puedes usar la pestaña "Buscar" e introducirid_product = 123. - Decide qué hacer con él. Tienes dos opciones:
- Eliminar el registro existente (si es un error y no lo necesitas). Marca la casilla junto al registro y haz clic en "Eliminar".
- Modificar el ID del nuevo registro (si quieres conservar ambos). Cambia el valor del ID a uno que no exista (por ejemplo, 9999). Luego, en tu PrestaShop, podrás renombrarlo o reordenarlo.
- Vuelve a intentar la operación. Una vez eliminado o modificado el duplicado, repite la importación o la acción que estabas realizando.
[INFO] Para evitar este error en el futuro, antes de importar datos, asegúrate de que los IDs de tus nuevos registros no coincidan con los existentes. Muchos módulos de importación permiten "auto-incrementar" los IDs.
Error 4: "Can't connect to local MySQL server through socket"
Este error indica que PrestaShop no puede encontrar el servidor de MySQL. Es un problema de conexión, no de datos corruptos. Las causas pueden ser que MySQL no esté funcionando, que el archivo de socket esté mal configurado o que el servidor esté sobrecargado.
Pasos para resolverlo
- Verifica que MySQL esté corriendo. En Syspanel, busca la sección "Servicios" o "Estado del servidor". Deberías ver MySQL como "Activo" o "Running". Si está "Detenido", haz clic en "Iniciar".
- Revisa el archivo de configuración de la conexión. PrestaShop guarda los datos de conexión a la base de datos en el archivo
app/config/parameters.php. Ábrelo con un editor de texto (desde Syspanel, usando el "Administrador de archivos"). Busca las líneas:
Asegúrate de que'database_host' => 'localhost', 'database_port' => '3306', 'database_name' => 'tu_base_de_datos', 'database_user' => 'tu_usuario', 'database_password' => 'tu_contraseña',database_hostsealocalhost(o la IP de tu servidor de bases de datos si está en otro equipo) y quedatabase_portsea3306(el puerto por defecto de MySQL). - Comprueba el archivo de socket. Si tu hosting usa un socket de MySQL (un archivo especial para la conexión local), la línea
database_hostpodría ser algo como'localhost:/tmp/mysql.sock'. Consulta con tu proveedor de hosting cuál es el socket correcto. - Reinicia el servicio de MySQL. Desde Syspanel, en la sección "Servicios", detén y vuelve a iniciar MySQL. Esto suele solucionar problemas de conexión temporales.
[WARNING] Si después de estos pasos el error persiste, es probable que el problema sea del servidor. Contacta con tu proveedor de hosting y diles el mensaje de error exacto. Ellos pueden revisar los logs del sistema.
Error 5: "Out of memory" o "Allowed memory size exhausted"
Aunque no es un error exclusivo de la base de datos, ocurre con frecuencia cuando PrestaShop intenta procesar consultas muy grandes, como al generar un informe de ventas de todo un año o al instalar un módulo pesado. El límite de memoria de PHP es demasiado bajo.
Cómo aumentarlo
- Accede al archivo de configuración de PHP. Desde Syspanel, ve al "Administrador de archivos" y busca el archivo
php.inien la raíz de tu tienda (a veces está en una carpeta comoetc/ophp/). Si no existe, puedes crearlo. - Modifica el límite de memoria. Busca la línea
memory_limity cámbiala a un valor mayor. Por ejemplo:
(256 megabytes es suficiente para la mayoría de las tiendas). Si no encuentras la línea, agrégala al final del archivo.memory_limit = 256M - Guarda y verifica. Guarda el archivo y vuelve a cargar tu tienda. Si el error persiste, sube el límite a
512M.
[TIP] Si no puedes editar el
php.ini, puedes pedir a tu hosting que lo haga por ti. También puedes probar a añadir esta línea en el archivo.htaccessde la raíz de tu PrestaShop:php_value memory_limit 256M.
Preguntas frecuentes (FAQ)
¿Cómo sé qué tabla de mi base de datos está corrupta?
La forma más fácil es desde phpMyAdmin. Selecciona todas las tablas de tu base de datos y, en el menú desplegable, elige "Revisar tabla". Las que tengan un estado "error" o "crashed" son las que necesitan reparación.
¿Puedo reparar tablas corruptas sin perder datos?
Sí, el comando REPAIR TABLE de MySQL está diseñado para recuperar datos de tablas dañadas sin borrar información. En la mayoría de los casos, no perderás ningún dato. Sin embargo, siempre es recomendable hacer una copia de seguridad antes.
¿Qué hago si no tengo acceso a Syspanel (puerto 2106)?
Si tu hosting no te da acceso a Syspanel, puedes pedir a tu proveedor que ejecute los comandos de reparación o que te proporcione acceso a phpMyAdmin a través de otro método (como cPanel o Plesk). Si no tienes ninguna herramienta, considera migrar a un hosting que sí ofrezca estas herramientas.
¿Cada cuánto debo revisar la base de datos?
Como mantenimiento preventivo, te recomiendo revisar la base de datos una vez al mes. Si tu tienda tiene mucho tráfico o haces muchas actualizaciones, puedes hacerlo cada semana. La revisión no daña nada y te ayuda a detectar problemas antes de que se conviertan en errores graves.
¿Un error de base de datos puede afectar al SEO de mi tienda?
Sí, y mucho. Si tu tienda muestra errores como "pantalla blanca" o "tabla no encontrada", los motores de búsqueda (Google, Bing) no podrán indexar tus páginas. Esto puede hacer que pierdas posiciones en los resultados de búsqueda y, por tanto, visitas y ventas. Por eso es tan importante solucionar estos errores cuanto antes.
Consejos finales para evitar errores de base de datos
- Haz copias de seguridad periódicas. Al menos una vez a la semana. Usa la herramienta de copias de seguridad de Syspanel o un módulo de PrestaShop. Guarda las copias en un lugar seguro (no en el mismo servidor).
- Mantén PrestaShop y los módulos actualizados. Las actualizaciones corrigen errores que pueden causar problemas en la base de datos.
- No instales módulos de fuentes no confiables. Muchos módulos gratuitos de sitios desconocidos contienen código malicioso o ineficiente que puede dañar tu base de datos.
- Usa un hosting de calidad. Un buen hosting con suficiente memoria RAM, CPU y espacio en disco reduce drásticamente la probabilidad de errores.
- Si ves un error, actúa rápido. Cuanto más tiempo pase, más datos podrían perderse. Si no sabes cómo solucionarlo, contacta con tu proveedor de hosting o con un desarrollador especializado en PrestaShop.
[INFO] Recuerda que la base de datos es el corazón de tu tienda. Cuidarla con estos sencillos pasos te ahorrará muchos dolores de cabeza y mantenerá tu negocio online funcionando sin problemas.
