MySQL “Invalid default value for ‘Date'”问题解决方法

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)
);
Mysql

如果不给birth_date字段指定默认值,就会出现如下的错误提示:

ERROR 1067 (42000): Invalid default value for 'birth_date'
Mysql

解决方法

方法一:

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

方法二:

第二种方法是修改MySQL配置文件,将sql_mode参数的值设置为空,例如:

[mysqld]
sql_mode=
Mysql

注意,这种方法在修改配置文件后需要重启MySQL服务才能生效。

示例

我们可以创建一个简单的表,来试一下上面的解决方法。首先,我们创建一个名为”test”的数据库,并进入该数据库:

CREATE DATABASE test;
USE test;
Mysql

然后,我们在该数据库下创建一个表,该表有三个字段,分别是”id”、”name”和”birth_date”:

CREATE TABLE students (
    id INT,
    name VARCHAR(10),
    birth_date DATE DEFAULT '1000-01-01',
    PRIMARY KEY (id)
);
Mysql

接下来,我们往该表中插入一条记录:

INSERT INTO students (id, name, birth_date) VALUES (1, 'Tom', '1999-01-01');
Mysql

然后,我们查询该表中的所有记录:

SELECT * FROM students;
Mysql

运行上面的查询语句后,会输出如下的结果:

+----+------+------------+
| id | name | birth_date |
+----+------+------------+
|  1 | Tom  | 1999-01-01 |
+----+------+------------+
Mysql

可见,我们成功地创建了一个包含日期类型字段的表,并且成功地向该表中插入了一条记录。

总结

在MySQL 5.7.5版本以后,对于日期类型的字段,需要给定一个默认值,否则就会报”Invalid default value for ‘Date'”的错误。解决这个问题有两种方法,一种是给日期类型的字段指定一个默认值,另一种是修改MySQL配置文件。上面的示例中演示了给日期类型字段指定默认值的方法,希望对大家有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册