MySQL 错误:Invalid default value for ‘dateAdded’
在使用MySQL创建表时,可能会遇到以下错误提示:“Invalid default value for ‘dateAdded’”。这个错误通常表示在默认值中设置了无效的日期值。
阅读更多:MySQL 教程
1. 问题分析
MySQL要求日期默认值的格式必须是YYYY-MM-DD或YYYY-MM-DD HH:MM:SS。如果默认值格式不正确,则会出现Invalid default value错误。
例如,下面的代码会导致Invalid default value错误:
CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
dateAdded TIMESTAMP DEFAULT '00-00-00 00:00:00',
PRIMARY KEY (id)
);
2. 解决方案
要解决Invalid default value错误,可以按照以下两种方法修改代码:
第一种方法:修改默认值的格式
使用正确的日期格式来指定默认值。例如,下面的代码可以避免Invalid default value错误:
CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
dateAdded TIMESTAMP DEFAULT '1970-01-01 00:00:00',
PRIMARY KEY (id)
);
第二种方法:禁用STRICT模式
在MySQL5.7版本之前,默认是不开启STRICT模式的。在MySQL5.7版本之后,默认开启STRICT模式。开启STRICT模式会导致MySQL检查默认值是否有效。因此,如果禁用STRICT模式,则可以避免Invalid default value错误。
使用以下代码可以禁用STRICT模式:
SET sql_mode='NO_ENGINE_SUBSTITUTION';
3. 案例演示
下面的示例演示了如何使用正确的日期格式来指定默认值。示例创建了一个名为my_table的表,它包含三个列:id、name和dateAdded。
CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
dateAdded TIMESTAMP DEFAULT '1970-01-01 00:00:00',
PRIMARY KEY (id)
);
总结
在MySQL创建表时,遇到Invalid default value错误,一般是因为默认值的日期格式不正确。要解决这个问题,可以修改默认值的格式,或者禁用STRICT模式。正确地创建MySQL表格是保证正确使用数据库的重要一步。
极客教程