Informe de problema — Error con tabla sessions en OJS
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
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.
Pruebas realizadas
Se creó un script PHP de prueba utilizando PDO para insertar datos en la tabla sessions.
Se verificó la conexión a la base de datos (exitosa).
Se identificó que el error ocurre al ejecutar el INSERT.
Se ejecutó:
SQL
SHOW CREATE TABLE sessions;
Posibles causas identificadas
-
Estructura incorrecta de la tabla
sessions-
Campo
payloaddefinido comoTEXTen lugar deLONGTEXT -
Campos obligatorios recibiendo valores NULL
-
-
Problemas de tamaño de datos
- OJS genera payloads grandes que exceden el tipo TEXT
-
Motor de almacenamiento incorrecto
- Tabla no usando
InnoDB
- Tabla no usando
-
Modo estricto de MySQL
- Puede rechazar inserciones con valores inconsistentes
-
Datos NULL enviados en la consulta
- Especialmente en
payloaddurante ejecución interna de OJS
- Especialmente en
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
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().
Solicitud al foro
Agradezco si alguien puede confirmar:
-
Estructura correcta actual de la tabla
sessionspara 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
Información adicional
-
Sistema: OJS
-
Base de datos: MySQL
-
Error principal:
SQLSTATE[HY000] -
Ubicación del fallo: inserción en tabla
sessions
Gracias de antemano por cualquier orientación.