Error en la tabla sessions SQLSTATE[HY000]

Informe de problema — Error con tabla sessions en OJS

:pushpin: Descripción del problema

Estoy experimentando un error en una instalación de OJS al momento de ejecutar consultas relacionadas con sesiones. El sistema arroja el siguiente mensaje:

PDOStatement->execute(NULL)
SQLSTATE[HY000]
INSERT INTO sessions...

Además, en el log del servidor aparecen errores asociados como:

Illuminate\Database\Connection->runQueryCallback
Doctrine\DBAL\Driver\PDOStatement->execute()
404 Not Found


:warning: Comportamiento observado

  • El sistema falla al intentar insertar registros en la tabla sessions.

  • El error ocurre durante la ejecución de consultas PDO.

  • Posteriormente, el sistema arroja errores 404.

  • El problema parece estar relacionado con el manejo de sesiones en base de datos.


:magnifying_glass_tilted_left: Pruebas realizadas

:white_check_mark: Se creó un script PHP de prueba utilizando PDO para insertar datos en la tabla sessions.

:white_check_mark: Se verificó la conexión a la base de datos (exitosa).

:white_check_mark: Se identificó que el error ocurre al ejecutar el INSERT.

:white_check_mark: Se ejecutó:

SQL

SHOW CREATE TABLE sessions;


:brain: Posibles causas identificadas

  1. Estructura incorrecta de la tabla sessions

    • Campo payload definido como TEXT en lugar de LONGTEXT

    • Campos obligatorios recibiendo valores NULL

  2. Problemas de tamaño de datos

    • OJS genera payloads grandes que exceden el tipo TEXT
  3. Motor de almacenamiento incorrecto

    • Tabla no usando InnoDB
  4. Modo estricto de MySQL

    • Puede rechazar inserciones con valores inconsistentes
  5. Datos NULL enviados en la consulta

    • Especialmente en payload durante ejecución interna de OJS

:white_check_mark: Soluciones aplicadas / sugeridas

Se propone recrear la tabla sessions con la siguiente estructura:

SQL

DROP TABLE IF EXISTS sessions;

CREATE TABLE sessions (

id VARCHAR(255) NOT NULL PRIMARY KEY,

user_id BIGINT NULL,

ip_address VARCHAR(45) NULL,

user_agent TEXT NULL,

payload LONGTEXT NOT NULL,

last_activity INT NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

``

Mostrar más líneas

Además:

  • Limpiar caché de OJS

  • Vaciar tabla sessions

  • Verificar configuración en config.inc.php

  • Revisar permisos de base de datos


:bullseye: Estado actual

El problema está en proceso de diagnóstico, pero todo apunta a una incompatibilidad o mala estructura en la tabla sessions, que provoca el fallo en PDOStatement->execute().


:folded_hands: Solicitud al foro

Agradezco si alguien puede confirmar:

  • Estructura correcta actual de la tabla sessions para OJS (versión reciente)

  • Si este problema está relacionado con versiones específicas de PKP / Laravel interno

  • Recomendaciones adicionales para manejo de sesiones en base de datos


:pushpin: Información adicional

  • Sistema: OJS

  • Base de datos: MySQL

  • Error principal: SQLSTATE[HY000]

  • Ubicación del fallo: inserción en tabla sessions


:white_check_mark: Gracias de antemano por cualquier orientación.

Hola @rodolfosdb

¿Qué versión de OJS estás instalando?

¿Qué versión de PHP estás utilizando?

¿Qué charset tiene tu BD?