Error: Incorrect date value: '0000-00-00' for column. Mysql Strict Mode
¿Como corregir Error: Incorrect date value: '0000-00-00' for column en MySQL con strict_mode activado?
Últimamente MySQL está dando quebraderos de cabeza. Yo me lo estoy encontrando a diario. La empresa de alojamiento ha actualizado por seguridad la versión de MySQL a la versión 8.0.26, activando por defecto el modo strict_mode, entre otros . Este último cambio es el que realmente está dando tantos problemas.
La configuración por defecto en MySQL 8 es: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, and NO_ENGINE_SUBSTITUTION
Las alarmas empiezan a saltar cuando añadimos o intentamos modificar un dato de la tabla cuando nos han cambiado el servidor con el modo strict_mode activado. Os encontraréis con el siguiente error:
Error: Incorrect date value: '0000-00-00' for column nombre_columna
El modo strict_mode obliga a utilizar un modo de consultas estándar, por lo que ya no se permite realizar ciertas consultas, entre ellas, inicializar una fecha a '0000-00-00'.
Bueno, pues parecería sencillo, cambio el valor por defecto y ya está, no?, pues no:
- No se puede modificar el valor por defecto si tenemos datos erróneos en la tabla. Detecta que en la base de datos hay fechas inválidas, por lo que no dejará hacerlo
- Tampoco podemos cambiar los valores con una sentencia tan sencilla comoUPDATE tabla SET campo_fecha = NULL WHERE campo_fecha = '0000-00-00'. Por qué? Pues porque nos vuelve a decir que no podemos utilizar este formato de fechas
Comentarios