H2 数据库 - MySQL 脚本的未知数据类型

标签 h2 in-memory-database

我是内存数据库的新手。

我尝试使用H2数据库来使用spring boot、spring data JPA开发项目,但是在初始化应用程序时遇到了问题。

Caused by: org.h2.jdbc.JdbcSQLException: Unknown data type: "FK_PERSON__PERSONTYPE_IDX"; SQL statement:

因为这个脚本是从MySQL导出的。所以我认为 H2 不理解一些错误的语法

例如,这是脚本的一部分:

CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `firstname` varchar(255) NOT NULL,
  `lastname` varchar(255) DEFAULT NULL,
  `type` int(11) NOT NULL,
  `address` text,
  PRIMARY KEY (`id`),
  KEY `fk_person__persontype_idx` (`type`),
  CONSTRAINT `fk_person__persontype` FOREIGN KEY (`type`) REFERENCES `persontype` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='  ';

我尝试了一些解决方案:

Convert MySQL script to H2

http://matthewcasperson.blogspot.de/2013/07/exporting-from-mysql-to-h2.html

用双引号、单引号替换符号...甚至根本不使用引号但不起作用。 请告诉我为什么? 谢谢。

最佳答案

我也遇到了类似的问题。

删除“KEY”行,在您的示例中对应于:

KEY `fk_person__persontype_idx` (`type`),

为我工作。

关于H2 数据库 - MySQL 脚本的未知数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33979238/

相关文章:

java - 为什么在通过 data.sql 文件导入时会出现此错误 "Error creating bean with name ' entityManagerFactory' defined in class path resource”

sql - 如何查找一个表中在另一表中没有对应行的行

java - 如何在corda中创建服务以将任意数据存储在节点数据库中的任意位置而不是存储在Vault内

hsqldb - 查看H2或HSQLDB内存数据库的内容

unit-testing - 使用 PDO Sqlite 内存数据库进行 PHPUnit 测试

java - 有没有支持存储过程的内存数据库?

spring - HQL - 使用 H2 和 MySQL 在 where 子句中列出可以为空的列表

spring-boot - Spring Boot 测试似乎正在创建与我预期不同的 H2 测试数据库

vb.net - 如何使用C#vb.net控制内存DB消耗中的SQLite

database - 我什么时候应该考虑使用内存数据库以及需要注意的问题是什么?