zoukankan      html  css  js  c++  java
  • Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

    错误描述

    在DBeaver执行DDL语句时报错:SQL 错误 [1293] [HY000]: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    DDL语句如下:

    CREATE TABLE `etl_conf_d` (
      `jobName` varchar(128) NOT NULL,
      `jobNo` int(11) DEFAULT NULL,
      `jobDesc` varchar(128) DEFAULT NULL,
      `validFlg` varchar(1) DEFAULT NULL,
      `runFlg` varchar(1) DEFAULT NULL,
      `runStartTimestamp` TIMESTAMP ,
      `runEndTimestamp` TIMESTAMP,
      `finalEndTimestamp` TIMESTAMP,
      `queryMinute` int(11) NOT NULL DEFAULT 0,
      `etlStartTimestamp` TIMESTAMP ,
      `etlEndTimestamp` TIMESTAMP ,
      `createUser` varchar(128) DEFAULT NULL,
      `createTimestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `evtUser` varchar(128) DEFAULT NULL,
      `evtTimestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`jobName`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    ;
    

    解决过程

    查阅发现是MySQL版本的问题。MySQL低版本不支持在一个表里面有两个TIMESTAMP类型。
    检查MySQL版本:

    C:Usersxuqy>mysql -V
    mysql  Ver 8.0.22 for Win64 on x86_64 (MySQL Community Server - GPL)
    

    高于5.5.x,可以支持两个Timestamp。但是DBeaver测试连接时,显示我的MySQLServer版本是5.5.28

    检查后我发现,我本地8.0.22版本的MySQL并没有安装成功,services中运行的还是5.5.28的旧版本。但是不知道为什么我使用mysql -V显示的是8.0.22

    解决方法

    1. 重新安装8.0.22版本的MySQL;
    2. 换DBeaver的连接,8.x.x版本的MySQL连接应该选择MySQL 8+而不是MySQL
  • 相关阅读:
    java基础—GUI编程(一)
    java基础—数组
    java基础—异常处理
    java基础—面向对象
    多线程(二)
    多线程(一)
    ORACLE数据库SQL语句的执行过程
    Jetty直接调试,不用部署,不用弄一些杂七杂八的设置
    (2.1)servlet线程安全问题
    (3)tomcat源代码分析环境的搭建
  • 原文地址:https://www.cnblogs.com/daheww/p/14460926.html
Copyright © 2011-2022 走看看