1364: Field 'name' doesn't have a default value (el campo no tiene valor predeterminado)
MySQL¿Qué significa?
Se insertó una fila sin valor para una columna definida como NOT NULL sin DEFAULT. En modo SQL estricto, MySQL genera un error porque no puede rellenar automáticamente la columna obligatoria que falta.
¿Por qué ocurre?
Se omitió en el INSERT una columna obligatoria (NOT NULL, sin DEFAULT) y STRICT_TRANS_TABLES/STRICT_ALL_TABLES está habilitado en sql_mode. Una aplicación escrita para el antiguo modo permisivo encuentra este error al trasladarse a un servidor con el modo estricto habilitado.
Cómo solucionarlo
Añada al INSERT un valor para la columna que falta, o defina un DEFAULT razonable en la columna: ALTER TABLE my_table MODIFY my_column ... NOT NULL DEFAULT 'value'; Si la columna realmente es opcional, permita NULL. sql_mode puede relajarse como solución temporal/de compatibilidad, pero se recomienda mantener el modo estricto por la calidad de los datos.
Más entradas de este motor
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value (la tabla no tiene ninguna partición para el valor)
- 1049Unknown database 'name'
- 1206The total number of locks exceeds the lock table size (el número total de bloqueos supera el tamaño de la tabla de bloqueos)
- 1236Got fatal error 1236 from master when reading data from binary log (error fatal 1236 del master al leer el binary log)
- 1129Host 'host' is blocked because of many connection errors (host bloqueado por demasiados errores de conexión)
- 1194Table 'name' is marked as crashed and should be repaired (tabla marcada como caída; debe repararse)