我打算用h2作为单元测试的内存数据库。我把所有的东西都通过弹簧连接在一起。一切看起来都很好。数据库加载完毕,ddl sql文件运行,dml sql(或者看起来是这样)也运行。
我可以运行一个测试,在数据库中创建一个记录,然后检索并验证它是否被适当地持久化。这告诉我ddl脚本运行良好。
问题是,当我试图接收通过dml脚本插入的记录时,我什么也得不到。
我尝试将同一个insert语句放在文件中两次,但确实收到了一个唯一的约束错误,它告诉我它们正在运行……但由于某种原因没有持久化。
动态链接地址:

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?。使用您使用的数据库urljdbc:h2:file:db_test,文件将存储在当前工作目录中。根据您启动应用程序的位置,这是一个不同的位置,因此使用不同的数据库。
我建议改用jdbc:h2:~/db/test_db...
我想用h2作为内存数据库
您实际上使用的是持久数据库,请参见database URL overview

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

10-11 05:13
查看更多