datetime的默认值now()报错1067?

时间:2022-09-21 10:00:16
建表语句
create table t_node
(
   nodeid               varchar(32)                     not null,    -- 'node'+number
   nodename             varchar(40)                     not null,    -- node name
   nodedesc             varchar(255)                        null,    -- desciption
   createtime           datetime        default now()   not null
)
;
原来是正常的,后来不知道是改了什么,报错1067

错误代码: 1067
Invalid default value for 'createtime'

求助,怎么才能恢复成不错报错?

mysql版本5.6.14

5 个解决方案

#1


如果因为时区而引发时间的编号对数据没有影响的话 ,可以修改数据类型为 “timestamp ”,这样可以添加 now()默认值

#2


除非是时间戳timestamp,其他数据类型的默认值不能是函数,只能是常数。

#3


在MySQL中不支持列的default为函数的形式,如果你想达到某列的默认设置为当前更新日期与时间的功能,你可以使用timestamp列类型,你可以试试这个代码
create table t_node
(
   nodeid               varchar(32)                     not null,    -- 'node'+number
   nodename             varchar(40)                     not null,    -- node name
   nodedesc             varchar(255)                        null,    -- desciption
   createtime           timestamp(8)   not null
)
;
那个timestamp后面带的参数你可以自己定义
timestamp
timestamp
timestamp
timestamp

#4


接上一个回复
那个timestamp后面带的参数你可以自己定义
timestamp(14)YYYYMMDDHHMMSS
timestamp(12)YYMMDDHHMMSS
timestamp(10)YYMMDDHHMM
timestamp(8)YYYYMMDD
timestamp(6)YYMMDD
timestamp(4)YYMM
timestamp(2)YY

#5


首先,建表时默认值是不支持函数的,所以不能默认now();
如果你想要insert时给默认值,update时不变,可以这么写
createtime           timestamp not null  default CURRENT_TIMESTAMP

#1


如果因为时区而引发时间的编号对数据没有影响的话 ,可以修改数据类型为 “timestamp ”,这样可以添加 now()默认值

#2


除非是时间戳timestamp,其他数据类型的默认值不能是函数,只能是常数。

#3


在MySQL中不支持列的default为函数的形式,如果你想达到某列的默认设置为当前更新日期与时间的功能,你可以使用timestamp列类型,你可以试试这个代码
create table t_node
(
   nodeid               varchar(32)                     not null,    -- 'node'+number
   nodename             varchar(40)                     not null,    -- node name
   nodedesc             varchar(255)                        null,    -- desciption
   createtime           timestamp(8)   not null
)
;
那个timestamp后面带的参数你可以自己定义
timestamp
timestamp
timestamp
timestamp

#4


接上一个回复
那个timestamp后面带的参数你可以自己定义
timestamp(14)YYYYMMDDHHMMSS
timestamp(12)YYMMDDHHMMSS
timestamp(10)YYMMDDHHMM
timestamp(8)YYYYMMDD
timestamp(6)YYMMDD
timestamp(4)YYMM
timestamp(2)YY

#5


首先,建表时默认值是不支持函数的,所以不能默认now();
如果你想要insert时给默认值,update时不变,可以这么写
createtime           timestamp not null  default CURRENT_TIMESTAMP