sql >> Base de Datos >  >> RDS >> Mysql

MySQL Valor predeterminado no válido para la marca de tiempo cuando no se proporciona ningún valor predeterminado.

Aunque @jsnplank tiene razón en que las marcas de tiempo se tratan de manera diferente y debería considerar usar el tipo de datos de fecha y hora para estas 2 columnas en particular, sin embargo, no explica el mensaje de error.

Lo más probable es que el mensaje de error sea el resultado de una combinación de cómo mysql trata los campos de marca de tiempo cuando no se proporciona un valor predeterminado y la configuración de su modo sql.

  1. Defina ambas columnas de marca de tiempo como no nulas, sin ningún valor predeterminado específico establecido. Esto significa que el valor predeterminado de la primera columna de marca de tiempo será current_timestamp() y también se actualizará a current_timestamp() cada vez que cambie el registro. Esta es la razón por la cual el primer campo de marca de tiempo no genera un mensaje de error, sin importar cuál de los 2 sea el primero.

    Sin embargo, el valor predeterminado de la segunda columna de marca de tiempo no nula será '0000-00-00 00:00:00' si no define explícitamente un valor predeterminado.

    Consulte esta publicación de blog para obtener más detalles .

  2. Probablemente no_zero_date El modo sql también está habilitado en su servidor, ya sea explícitamente o como parte del modo sql estricto. Este modo sql genera un error si desea establecer '0000-00-00 00:00:00' como valor predeterminado o desea insertar este valor en cualquier campo de fecha.

Por lo tanto, puede usar el tipo de datos de marca de tiempo en su tabla, pero haga que el segundo sea anulable o proporcione 0 o cualquier fecha válida (como la época) como un valor predeterminado explícito.

Dado que está marcando las fechas de inicio y finalización con estos campos, puede ser una buena idea usar la fecha y hora en lugar de la marca de tiempo como tipo de datos.