• 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
  • 相关阅读:
    【LOJ】#2548. 「JSOI2018」绝地反击
    【LOJ】 #2547. 「JSOI2018」防御网络
    【LOJ】#2513. 「BJOI2018」治疗之雨
    【LOJ】#2546. 「JSOI2018」潜入行动
    【LOJ】#2479. 「九省联考 2018」制胡窜
    【LOJ】#2511. 「BJOI2018」双人猜数游戏
    【LOJ】#2493. 「BJOI2018」染色
    【LOJ】#2492. 「BJOI2018」二进制
    【LOJ】#2512. 「BJOI2018」链上二次求和
    使用POI读取excel文件内容
  • 原文地址:https://www.cnblogs.com/daheww/p/14460926.html
Copyright © 2020-2023  润新知