You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 01:37:11