MySQL 8.0.31添加默认值为CURDATE()的DATE字段触发语法错误
MySQL 8.0.31中新增DATE字段并设置CURDATE()默认值报错的解决方法
问题原因
在MySQL 8.0中,当使用函数作为列的默认值时,必须将函数表达式用括号()包裹起来。你之前的语句ALTER TABLE test ADD COLUMN col4 DATE DEFAULT CURDATE()未对CURDATE()添加括号,违反了语法规则,因此触发1064错误。
正确语句
将函数用括号包裹后即可正常执行:
ALTER TABLE test ADD COLUMN col4 DATE DEFAULT (CURDATE());
验证结果
执行上述语句后,查看表结构会看到col4字段的默认值已正确设置:
mysql> describe test; +-------+--------------+------+-----+-------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+-------------------+-------+ | col1 | int | YES | | 0 | | | col2 | varchar(100) | YES | | hello | | | col3 | varchar(5) | YES | | T | | | col4 | date | YES | | (CURDATE()) | | +-------+--------------+------+-----+-------------------+-------+
内容的提问来源于stack exchange,提问作者Siddharth Das
相关产品推荐
相关产品推荐

