将Mysql列的默认值更改为CURRENT_DATE会出错?

时间:2014-04-24 12:35:25

标签: mysql

ALTER TABLE `mysystem`.`projects` 
MODIFY COLUMN `project_capture_date` DATE NOT NULL DEFAULT CURRENT_DATE();

给出:

Error Code: 1064. You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server
version for the right syntax to use near 'CURRENT_DATE()'
 at line 2

当前行定义:

project_capture_date, date, NO, , 0000-00-00

刚刚将引擎从InnoDB更改为MyISAM

1 个答案:

答案 0 :(得分:1)

根据mysql文档

http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

  

数据类型规范中的DEFAULT值子句表示a   列的默认值。除了一个例外,默认值必须   是一个常数;它不能是一个功能或表达。这意味着,   例如,您不能将日期列的默认值设置为   NOW()或CURRENT_DATE等函数的值。例外   是你可以指定CURRENT_TIMESTAMP作为a的默认值   TIMESTAMP

要解决此问题,您可能需要使用DEFAULT CURRENT_TIMESTAMP将数据类型定义为TIMESTAMP列

<强> DEMO

如果您不想要TIMESTAMP,那么您可以在插入时将列值设置为Now()