将数据从mysql工作台导入h2

lzfw57am  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(647)

我正试图将数据从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 因为我被告知这样做可能更容易,但如果你想提出一些不同的建议,那么我可以制作一个带有嵌入式数据库的应用程序,这也会很有帮助。
谢谢您。

wsxa1bj1

wsxa1bj11#

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兼容模式下的非标准定义,但是您需要从其当前源代码(github上提供,这里有构建说明)编译h2并启用此兼容模式;这些改进还没有发布。
或者,您可以简单地删除括号后的所有额外子句并使用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,它们都不能作为mysql的直接替代。

相关问题