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