微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据从mysql工作台导入H2

如何解决将数据从mysql工作台导入H2

我正在尝试将数据从 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,因为有人告诉我这样做可能更容易,但如果您想提出不同的建议,那么我可以使用嵌入式数据库制作一个也有帮助的应用程序.

谢谢。

解决方法

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 上获得,构建说明为 here)编译 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 的直接替代品。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。