实时服务器中当前时间戳字段的默认值无效

时间:2018-02-27 12:45:27

标签: mysql timestamp

下面的查询在我的localhost中运行正常,但是当我尝试在实时服务器中执行此查询时,它会出现sql错误

CREATE TABLE IF NOT EXISTS `tbl_claims` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`claimed_profile_id` int(11) NOT NULL,
`claimed_by_profile_id` int(11) NOT NULL COMMENT 'this will be only doctor''s profile id',
`name` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`phone_no` varchar(100) NOT NULL,
`status` enum('approved','disapproved','pending') NOT NULL DEFAULT 'pending',
`added_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

它给出了以下错误:

 Invalid default value for 'added_on'

我不知道为什么上面的查询在loalhost中工作正常以及为什么它在实时服务器中不起作用。

查询不起作用的服务器具有PHP版本5.6.33

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我怀疑是因为您尝试使用CURRENT_TIMESTAMP作为datetime字段的默认值。

For MySQL >= 5.6

  

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

For MySQL <= 5.5

  

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

如您所见,对于5.5及更低版本,您只能使用CURRENT_TIMESTAMP作为TIMESTAMP字段的默认值。