MySQL “Invalid default value for ‘Date'”问题解决方法
在使用MySQL时,经常会遇到”Invalid default value for ‘Date'”的错误提示,这是由于MySQL版本更新导致的,下面我们将介绍如何解决这个问题。
阅读更多:MySQL 教程
问题原因
在MySQL 5.7.5版本以后,对于日期类型的字段,需要给定一个默认值,否则就会报”Invalid default value for ‘Date'”的错误。例如,在创建表时,如果定义如下的字段:
CREATE TABLE test (
id INT,
name VARCHAR(10),
birth_date DATE,
PRIMARY KEY (id)
);
如果不给birth_date字段指定默认值,就会出现如下的错误提示:
ERROR 1067 (42000): Invalid default value for 'birth_date'
解决方法
方法一:
在MySQL 5.7.5版本以后,对于日期类型的字段,需要给定一个默认值,否则就会报”Invalid default value for ‘Date'”的错误。要解决这个问题,有两种方法。
第一种方法就是给日期类型的字段指定一个默认值,例如:
CREATE TABLE test (
id INT,
name VARCHAR(10),
birth_date DATE DEFAULT '1000-01-01',
PRIMARY KEY (id)
);
方法二:
第二种方法是修改MySQL配置文件,将sql_mode参数的值设置为空,例如:
[mysqld]
sql_mode=
注意,这种方法在修改配置文件后需要重启MySQL服务才能生效。
示例
我们可以创建一个简单的表,来试一下上面的解决方法。首先,我们创建一个名为”test”的数据库,并进入该数据库:
CREATE DATABASE test;
USE test;
然后,我们在该数据库下创建一个表,该表有三个字段,分别是”id”、”name”和”birth_date”:
CREATE TABLE students (
id INT,
name VARCHAR(10),
birth_date DATE DEFAULT '1000-01-01',
PRIMARY KEY (id)
);
接下来,我们往该表中插入一条记录:
INSERT INTO students (id, name, birth_date) VALUES (1, 'Tom', '1999-01-01');
然后,我们查询该表中的所有记录:
SELECT * FROM students;
运行上面的查询语句后,会输出如下的结果:
+----+------+------------+
| id | name | birth_date |
+----+------+------------+
| 1 | Tom | 1999-01-01 |
+----+------+------------+
可见,我们成功地创建了一个包含日期类型字段的表,并且成功地向该表中插入了一条记录。
总结
在MySQL 5.7.5版本以后,对于日期类型的字段,需要给定一个默认值,否则就会报”Invalid default value for ‘Date'”的错误。解决这个问题有两种方法,一种是给日期类型的字段指定一个默认值,另一种是修改MySQL配置文件。上面的示例中演示了给日期类型字段指定默认值的方法,希望对大家有所帮助。