H2中用于单元测试的现有索引

时间:2018-08-20 12:17:17

标签: java mysql spring junit h2

我有一个在MySQL数据库上运行的服务。该服务是用Java编写的,并使用Spring&JPA / Hibernate。 我们正在使用H2数据库进行单元测试。问题是当我们运行测试时,在架构创建阶段会看到以下错误:

Index "USERNAME_INDEX" already exists; SQL statement: create index userName_index on MyTable1 (userName)

问题似乎是我们的域类为不同的表提供了具有相同名称的索引:

MyTable : userName_index on column userName
MyTable1 : userName_index on column userName

由于我们仅看到MyTable1的错误,因此我们猜测是成功创建了MyTable的索引,然后创建了MyTable1的索引失败了。

显然,在H2中,每个模式的索引名称必须唯一,但是MySQL允许名称相同的索引,只要它们位于不同的表中即可。

我们无法更改索引名称。我还尝试过将MySQL模式添加到连接URL中,如下所示:

"jdbc:h2:mem:./MyService;MODE=MySQL;DB_CLOSE_DELAY=-1;"

如何使用当前索引名称使单元测试与H2一起使用?

0 个答案:

没有答案