Java h2数据库唯一索引名的解决方法
我有一个java应用程序,它使用Liquibase进行迁移,到目前为止,它使用MySQL运行测试用例 我想用h2数据库运行测试用例。为此,我在JDBC配置中做了必要的更改。但是当我运行Java h2数据库唯一索引名的解决方法,java,mysql,indexing,h2,unique-constraint,Java,Mysql,Indexing,H2,Unique Constraint,我有一个java应用程序,它使用Liquibase进行迁移,到目前为止,它使用MySQL运行测试用例 我想用h2数据库运行测试用例。为此,我在JDBC配置中做了必要的更改。但是当我运行mvn测试时,我得到以下错误: 索引“idx\U工作流\U id”已存在;SQL语句: 调试时,我发现两个表有一个同名的索引:idx\u workflow\u id,h2数据库有一些限制,即在数据库中有唯一的索引名 现在的问题是,数据库结构已经存在于staging和prod中,更改索引名不是一个选项 是否有任何方法
mvn测试时,我得到以下错误:
索引“idx\U工作流\U id”已存在;SQL语句:
调试时,我发现两个表有一个同名的索引:idx\u workflow\u id
,h2数据库有一些限制,即在数据库中有唯一的索引名
现在的问题是,数据库结构已经存在于staging和prod中,更改索引名不是一个选项
是否有任何方法可以运行h2数据库的迁移,而无需创建索引或忽略它们。或者进行一些配置更改,这将允许在DB中使用相同名称的索引
配置:
database:
driverClass: org.h2.Driver
url: "jdbc:h2:mem:my_db;MODE=MySQL;DATABASE_TO_UPPER=false;IGNORECASE=TRUE;DB_CLOSE_DELAY=-1"
maxWaitForConnection: 1s
minSize: ${MIN_DB_CONNECTIONS:-10}
maxSize: ${MAX_DB_CONNECTIONS:-100}
defaultTransactionIsolation: READ_COMMITTED
checkConnectionWhileIdle: false
checkConnectionOnBorrow: true
checkConnectionOnConnect: true
validationQuery: "SELECT 1"
properties:
hibernate.dialect: org.hibernate.dialect.H2Dialect
hibernate.show_sql: false
hibernate.hbm2ddl.auto: none
hibernate.session.events.log: false
hibernate.generate_statistics: true
org.hibernate.stat: INFO
charSet: UTF-8