MySQL建表报错:设置CURRENT_DATE()为DATE字段默认值失败
解决MySQL创建表时的1064语法错误
原始错误SQL语句
CREATE TABLE payment.payment_details ( customer_id INT NOT NULL AUTO_INCREMENT, amount INT NOT NULL, mode VARCHAR(50) NOT NULL, payment_date DATE NOT NULL DEFAULT CURRENT_DATE(), PRIMARY KEY (customer_id)) ENGINE = InnoDB;
错误信息
操作失败:应用SQL脚本到数据库时出错。
正在执行上述CREATE TABLE语句
ERROR 1064:SQL语法错误;请查阅对应MySQL服务器版本的手册,查看在'CURRENT_DATE(), PRIMARY KEY (customer_id)) ENGINE = InnoDB'附近使用的正确语法
错误原因
MySQL对DATE类型列的默认值语法有明确要求:使用CURRENT_DATE()作为DATE列默认值会触发语法错误,正确写法是使用不带括号的CURRENT_DATE;另外MySQL 5.7及更早版本默认不允许将函数作为DATE列的默认值,而CURRENT_DATE(不带括号)是兼容所有MySQL版本的稳妥写法。
修正后的SQL语句
CREATE TABLE payment.payment_details ( customer_id INT NOT NULL AUTO_INCREMENT, amount INT NOT NULL, mode VARCHAR(50) NOT NULL, payment_date DATE NOT NULL DEFAULT CURRENT_DATE, PRIMARY KEY (customer_id)) ENGINE = InnoDB;
内容的提问来源于stack exchange,提问作者Taif
相关产品推荐
相关产品推荐

