重置h2中的自动增量
我正在测试一个返回json响应的控制器但第一次测试失败,因为h2数据库没有重置自动增量id。 手动使用夹具或创建对象也存在同样的问题。
@Before public void setUp() { Fixtures.deleteAllModels(); Fixtures.loadModels("data.yaml"); }
如何解决这个问题呢?
启动您的播放应用,使用此url启动浏览器(如果您在本地运行播放应用):
http://localhost:9000/@db
输入你的h2 db,然后输入以下命令并运行:
ALTER TABLE ALTER COLUMN RESTART WITH 1
如果你想以编程方式执行此操作, Fixtures.executeSQL()
可能会很有用
有关更多信息,请访问http://www.h2database.com/html/grammar.html#alter_table_alter
如果你使用Spring,我发现这篇博文建议使用@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
这样每个测试都使用一个新的应用程序上下文,从而重置db增量。