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
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
那个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
如果你想要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
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
那个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
如果你想要insert时给默认值,update时不变,可以这么写
createtime timestamp not null default CURRENT_TIMESTAMP