zoukankan      html  css  js  c++  java
  • MySQL创建多列timestamp报错ERROR 1067 (42000): Invalid default value for 'createtime'

    可能的问题:

    1.default 用了‘0’,mysql5.7之后使用严格模式是不能这样写的,我百度了一些博客,发现早些年的博客都有timestamp default 0,但是我本地出错了。

    2.没有显式指定default,我执行 

    create table a(a timestamp); #成功执行
    create table b(a timestamp, b timestamp); #出错,ERROR 1067 (42000): Invalid default value for 'b'
    
    create table c(a timestamp default current_timestamp on update current_timestamp, b timestamp default current_timestamp on update current_timestamp); #成功
    
    
    # 但是按理来说,如果b成功执行之后,使用show create table a 可以知道show create table b 和 show create table c的结果应该是一致的。
    | c2    | CREATE TABLE `c2` (
      `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    | aa    | CREATE TABLE `aa` (
      `a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    不清楚是不是触及到了什么知识盲点,创建b表失败不知道是什么原因。

  • 相关阅读:
    Spring+Springmvc+SpringJDBC+freemaker+Logback配置
    POJ1942+找规律
    HDU2955+DP+背包变形
    HDU1201+简单题
    HDU1288+枚举
    面试经验(转)
    HDU1864+dp+类似背包
    PKU1659+havelhakimi定理
    算法复杂度分析(摘)
    HDU3047+并查集
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/13716065.html
Copyright © 2011-2022 走看看