【问题标题】:What is the issue with this sql CREATE TABLE command?这个 sql CREATE TABLE 命令有什么问题?
【发布时间】:2020-06-18 22:05:10
【问题描述】:

我正在尝试将架构从 mysql5.6 移动到 mysql5.5

我将架构从 v5.6 导出到 .sql 文件,当尝试将文件导入到 v5.5 时,出现错误,但我不知道错误是什么,因为 sql 会报告所有错误为error in sql syntax
这是我的创建命令,希望有人能帮助找出问题所在? 错误仅在此创建命令中,因此仅在此处发布相关部分

DROP TABLE IF EXISTS `status_change_logs`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `status_change_logs` (
  `entry_id` int(11) NOT NULL AUTO_INCREMENT,
  `match_id` int(11) NOT NULL,
  `status` smallint(4) NOT NULL,
  `timestamp` datetime(4) NOT NULL,
  PRIMARY KEY (`entry_id`),
  KEY `match_id` (`match_id`)
) ENGINE=InnoDB AUTO_INCREMENT=102273 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

错误

ERROR 1064 (42000) at line 897: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(4) NOT NULL,
  PRIMARY KEY (`entry_id`),
  KEY `match_id` (`match_id`)
) ENGINE' at line 5

Operation failed with exitcode 1

【问题讨论】:

  • 你为什么要倒退而不是前进到 MySQL 8+?
  • @GordonLinoff 有一些限制,我不能在这里说。 :)
  • 我相信 datetime 类型不会采用括号中的大小,即它应该是 datetime 而不是 datetime(4) 至少对于旧版本的 mysql。
  • @px1mp 我应该用 datetime 替换所有 datetime(x) 吗?
  • @px1mp 请发表您的评论作为解决所有问题的答案!谢谢!

标签: mysql sql database


【解决方案1】:

我相信 datetime 类型不采用括号中的大小,即它应该是

`timestamp` datetime NOT NULL,

而不是

`timestamp` datetime(4) NOT NULL,

肯定至少对于旧版本的 MySQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多