• 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表失败不知道是什么原因。

  • 相关阅读:
    排序算法的稳定性
    字符串处理常用函数
    判断两棵二叉树是否相等
    约瑟夫环
    自加++
    Linux 安装配置 Tomcat
    在 eclipse 中将 web 项目部署到 tomcat 服务器上
    PHP连接MySQL数据库
    logback
    Log4J
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/13716065.html
Copyright © 2020-2023  润新知