我想在mysql中设置date作为date的默认值(不是timestamp),但是出现了下面的错误
ALTER TABLE `RMS`.`transactionentry`
CHANGE `Date` `Date` DATE DEFAULT NOW() NOT NULL
错误
Invalid default value for 'Date'
同一案件
alter table `RMS`.`transactionentry`
change `Date` `Date` date default 'CURRENT_DATE' NOT NULL
6条答案
按热度按时间wlp8pajw1#
更新:
我不认为你可以用mysql
date
实现这一点。你必须使用timestamp
或尝试这种方法。gg0vcinb2#
数据类型规范中的DEFAULT值子句表示列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为NOW()或CURRENT_DATE等函数的值。例外情况是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值。
For Detail: Refer dev.mysql.com
dddzy1tm3#
记住,这可能是MYSQL版本本身的问题5.6允许没有默认值的时间戳,并且不需要将它们设置为null,但是5.7要求您显式设置默认值,如果不是,则为nul
eaf3rand4#
根据MySQL网站:
数据类型规范中的DEFAULT值子句表示列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为NOW()或CURRENT_DATE等函数的值。例外情况是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值。
因此:
你的问题是你把它变成了一个字符串,把它放在引号里。
lstz6jyr5#
可以使用以下命令更改列定义:
允许null为我工作。
wrrgggsh6#
对日期列使用DATETIME数据类型而不是DATE。这将包括时间戳信息。