我有一个在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一起使用?