以下查询在我的本地主机中工作正常,但是当我尝试在实时服务器中执行此查询时,它给出了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中效果很好,为什么它在Live Server中不起作用。
查询不起作用的服务器具有PHP版本5.6.33
任何建议都将不胜感激。
我怀疑这是因为您试图将CURRENT_TIMESTAMP
用作datetime
字段的默认值。
对于mysql> = 5.6:
数据类型规范中的
DEFAULT
值子句指示列的默认值。除一个例外,默认值必须是常数。它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为诸如NOW()
或CURRENT_DATE
之类的函数的值。例外是您可以将CURRENT_TIMESTAMP
指定为TIMESTAMP
和DATETIME
列的默认值。
用于mysql< = 5.5:
数据类型规范中的
DEFAULT
值子句指示列的默认值。除一个例外,默认值必须是常数。它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为诸如NOW()
或CURRENT_DATE
之类的函数的值。例外是您可以将CURRENT_TIMESTAMP
指定为TIMESTAMP
列的默认值。
您可以看到,对于5.5及以下版本,您只能将CURRENT_TIMESTAMP
用作TIMESTAMP
字段的默认值。