database - 内存中的 H2 数据库,插入脚本不持久

标签 database insert h2 persist

我打算使用 H2 作为我的单元测试的内存数据库。我正在通过 Spring 将所有东西连接在一起。一切似乎 工作正常。数据库加载,ddl sql 文件运行,dml sql 也是如此(或者看起来如此)。

我可以运行一个测试,在数据库中创建一条记录,然后检索并验证它是否已适当保留。所以这告诉我 ddl 脚本运行良好。

问题是当我尝试接收通过 dml 脚本插入的记录时,我什么也得不到。

我尝试将相同的插入语句两次放入文件中,但确实收到了一个唯一约束错误,这告诉我它们正在运行...但由于某种原因持久化

数据链接:

DROP TABLE IF EXISTS `schema`.`region` ;CREATE  TABLE IF NOT EXISTS `schema`.`region` (
  `region_id` INT(11) NOT NULL ,
  `name` VARCHAR(56) NOT NULL ,
  `description` VARCHAR(512) NULL DEFAULT NULL ,
  PRIMARY KEY (`region_id`) );

DML:

INSERT INTO `schema`.`region` (`region_id`, `name`, `description`) VALUES (1001, 'TEST', 'TESTING');

网址:

jdbc:h2:file:db_test;MODE=MYSQL;INIT=create schema if not exists test_db\\;runscript from 'classpath:test_ddl.sql'\\;runscript from 'classpath:test_dml.sql'

任何帮助都会有所帮助。

谢谢

最佳答案

参见 Where are the Database Files Stored?在常见问题解答中。使用您使用的数据库 URL jdbc:h2:file:db_test,文件存储在当前工作目录中。根据您启动应用程序的位置,这是一个不同的地方,因此使用不同的数据库。

我建议改用jdbc:h2:~/db/test_db...

I'm tying to use H2 as an in-memory database

您实际上使用的是持久数据库,请参阅 database URL overview .

关于database - 内存中的 H2 数据库,插入脚本不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12325986/

相关文章:

php - 建立评级系统 : database structure involve user_id?

mysql - 特定的MySQL批量插入性能调优

java - Spring Boot H2 db 模式 oracle

java - 如何使用H2嵌入式数据库创建H2内存数据库

database-design - 从 H2 数据库移植索引逻辑和连接逻辑,但是有关于索引的好信息吗?

php - 三张表的数据库连接查询

java - 安全存储数据的最佳方式?

oracle - 通过 FireDac 插入到 Oracle Blob 字段

mysql - 如何设计问答数据库(MySql)

mysql - SQL如何连接这些表