如果满足条件,我将尝试退出H2初始化脚本。
这完全有可能使用H2数据库。
SET @COUNT = SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_name = 'T_TABLE';
IF (@COUNT > 0) THEN RETURN;我在测试中初始化这样的数据。
@BeforeEach
public void setup() {
if (db != null)
return;
db = new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("db-schema.sql")
.build();
given(builder.build()).willReturn(db);
sut = new GPSOrderRepository(
builder,
sequenceService
);
}不幸的是,每个测试都会在数据库中显示脚本,但是脚本会创建表,因此在脚本已经执行时在后续测试中抛出一个错误。
发布于 2019-09-16 14:15:15
H2目前不支持有条件的语句执行。
因此,如果只使用支持IF NOT EXISTS子句的命令,则需要检查Java代码中的对象是否存在,或者可以尝试将子句添加到所有命令中。
CREATE TABLE IF NOT EXISTS TABLE_NAME(...);
ALTER TABLE TABLE_NAME ADD CONSTRAINT IF NOT EXISTS CONSTRAINT_NAME ...;https://stackoverflow.com/questions/57957588
复制相似问题