Parámetro predeterminado de Mysql5.7 error_MYSQL ERROR 1067: valor predeterminado no válido para NO_ZERO_IN_DATE, NO_ZERO_DATE Estos dos parámetros limitan el tiempo no puede ser 0

mysql1067 parámetro predeterminado error_MYSQL ERROR 1067: valor predeterminado no válido para la solución 'xxx_time'

Recientemente, actualicé mysql a 5.7 y wordpress informó un error al exportar datos. Al agregar un campo a una tabla, de repente me doy cuenta de que el valor predeterminado de un campo de tipo de fecha se informará como incorrecto, deprimido ~. El mismo problema también puede aparecer en mysql8.0.

Vea cuál es el nombre de su campo, el mío es un campo de hora y el tipo es fechahora. Pensando que el valor predeterminado del tipo puede ser limitado, verifique sql_mode. Efectivamente: NO_ZERO_IN_DATE, NO_ZERO_DATE Estos dos parámetros limitan el tiempo no puede ser 0.

68741a1f9448d9c78d254db93388tarifa6.png

1. Captura de pantalla de error

MySQL: ERROR 1067 (42000): valor predeterminado no válido para 'end_time'

2. Análisis de errores

A la primera columna TIMESTAMP de la tabla (si no se declara como NULL o está presente con una cláusula DEFAULT o ON UPDATE) se le asignarán automáticamente los atributos DEFAULT CURRENT_TIMESTAMP y ON UPDATE CURRENT_TIMESTAMP

Las columnas TIMESTAMP después de la primera (si no se declaran como NULL o muestran la cláusula DEFAULT) se les asignará automáticamente DEFAULT '0000-00-00 00:00:00' (marca de tiempo cero), que no cumple con NO_ZERO_DATE en sql_mode e informa un error.

Nota: Hay dos tipos de sql_mode, uno es un valor nulo y el otro es un modo estricto, lo que dará muchas configuraciones predeterminadas. El modo estricto se usa de forma predeterminada después de MySQL5.7.

NO_ZERO_DATE: si se establece este valor, la base de datos MySQL no permite insertar una fecha cero, y la inserción de una fecha cero generará un error en lugar de una advertencia.

3. Solución

Método 1: primero ejecute select @@sql_mode, copie el valor consultado y elimine NO_ZERO_DATE en él, y luego ejecute set sql_mode = 'valor modificado'.

Este método solo tiene efecto en la sesión actual

Método 2: Primero ejecute select @@global.sql_mode, copie el valor consultado y elimine NO_ZERO_DATE en él, y luego ejecute set global sql_mode = 'modified value'.

Este método surte efecto en el servicio actual y falla después de reiniciar el servicio MySQL

Método 3: en el directorio de instalación de mysql, abra el archivo my.ini o my.cnf Bajo wamp, SQL_MODE no está configurado en MySQL 5.7.

1. Busque [mysqld] en el archivo my.ini

2. Si no hay SQL_MODE, agréguelo, si lo hay, modifíquelo

sql_mode=”ESTRICTAS_TRANS_TABLAS, SIN_SUSTITUCIÓN_MOTOR”

o

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

3. Reinicie MySQL, reinicie el servicio mysqld

Supongo que te gusta

Origin blog.csdn.net/happyzhlb/article/details/122766938
Recomendado
Clasificación