下面的查询在我的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
任何建议都将不胜感激。
答案 0 :(得分:0)
我怀疑是因为您尝试使用CURRENT_TIMESTAMP
作为datetime
字段的默认值。
数据类型规范中的
DEFAULT
value子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是一个功能或表达。这意味着,例如,您无法将日期列的默认值设置为NOW()
或CURRENT_DATE
等函数的值。例外情况是您可以将CURRENT_TIMESTAMP
指定为TIMESTAMP
和DATETIME
列的默认值。
数据类型规范中的
DEFAULT
value子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是一个功能或表达。这意味着,例如,您无法将日期列的默认值设置为NOW()
或CURRENT_DATE
等函数的值。例外情况是,您可以将CURRENT_TIMESTAMP
指定为TIMESTAMP
列的默认值。
如您所见,对于5.5及更低版本,您只能使用CURRENT_TIMESTAMP
作为TIMESTAMP
字段的默认值。