【问题标题】:Import data from mysql workbench to H2从mysql工作台导入数据到H2
【发布时间】:2021-04-11 19:40:21
【问题描述】:

我正在尝试将数据从 mysql 工作台导入 H2,但出现此错误。

CREATE TABLE `jobs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `engjob` varchar(45) NOT NULL,
  `itajob` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=116 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci [42001-200] 42001/42001

我不知道为什么。
我还想问一下 h2 是否是正确的数据库。 我正在尝试使用带有嵌入式数据库的 java 创建一个 Windows 应用程序。
最初我使用mySql workbench(我的错误)。我目前正在尝试将所有数据移动到H2,因为有人告诉我这样可能更容易,但是如果您想提出不同的建议,那么我可以使用嵌入式数据库制作一个应用程序,这也很有帮助。

谢谢。

【问题讨论】:

    标签: java intellij-idea mysql-workbench h2 embedded-database


    【解决方案1】:

    H2 和其他符合标准的 DBMS 期望类似

    CREATE TABLE "JOBS" (
      "ID" INT GENERATED BY DEFAULT AS IDENTITY (START WITH 116),
      "ENGJOB" VARCHAR(45) NOT NULL,
      "ITAJOB" VARCHAR(45) NOT NULL,
      PRIMARY KEY ("ID")
    )
    

    但您正在尝试执行非标准 MySQL 样式的 SQL。


    实际上当前的H2在MySQL兼容模式下接受你的非标准定义,但是你需要从它当前的源代码编译H2(在GitHub,构建指令是here)并启用这个兼容模式;这些改进尚未发布。


    或者可以简单地删除括号后的所有额外子句并使用 H2 1.4.200,但您可能也需要它的 MySQL 兼容模式: https://h2database.com/html/features.html#compatibility

    在这种情况下,不要忘记使用附加命令重新启动序列:

    ALTER TABLE `jobs` ALTER COLUMN `id` RESTART WITH 116;
    

    如果您对 SQL 中的异常有更多疑问,请包括错误消息和堆栈跟踪。在这个问题中,我只看到错误代码 (42001-200),对于更复杂的情况,可能需要额外的信息。


    众所周知的纯 Java 嵌入式 DBMS 有 3 种,它们都不能作为 MySQL 的替代品。

    【讨论】:

      猜你喜欢
      • 2022-12-13
      • 2021-04-13
      • 2018-10-26
      • 2014-03-04
      • 2016-01-22
      • 2019-04-29
      • 2018-02-13
      • 2017-12-06
      • 1970-01-01
      相关资源
      最近更新 更多