建表语句
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

解决方案 »

  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