在内存H2数据库中,插入未持久化的脚本



我打算将H2用作单元测试的内存中数据库。整个春天我都在把所有的东西连接起来。所有似乎都运行良好。DB加载,ddl-sql文件运行,dml-sql也运行(或者看起来是这样)。

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

问题是,当我试图接收通过dml脚本插入的记录时,我一无所获。

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

DDL:

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'

任何帮助都会有帮助。

感谢

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

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

我打算使用H2作为内存数据库

您实际使用的是一个持久数据库,请参阅数据库URL概述。

最新更新