我有一个应用程序,可以根据需要在格式更改时创建表。当表未通过简单的功能测试时,它们将被删除并再次创建。到目前为止,这已经很好用,但现在我已经改变了一些限制:我更改了一个主键并添加了一个外键。
掉落现在失败,但有例外:
org.h2.jdbc.JdbcSQLException: Constraint "PERSON_ID" not found; SQL statement:
alter table "GARDEN" drop constraint "PERSON_ID" [90057-178]
drop语句如下:
alter table "GARDEN" drop constraint "PERSON_ID"
alter table "GARDEN" drop constraint "PRIMARY_KEY"
drop table "GARDEN"
问题是这个drop语句对于所需的表格格式是有效的,但对于之前使用的格式(这是被检测为不可用并触发掉落的表格格式)无效。
如何在不考虑约束的情况下删除表格? (我总是丢弃所有相关的表 - 因此在这种情况下我不需要约束检查)
答案 0 :(得分:1)
如果你告诉Slick有约束,那么Slick将在删除表时尝试删除它们。您可以使用plain SQL显式运行所需的SQL语句。您还可以在驱动程序中使用Slick2的createModel
并检查约束,这样就可以有条件地执行操作。
答案 1 :(得分:0)
我不熟悉该框架,但如果约束应该在新表而不是旧表上,则可能需要更改属性的分配位置。话虽如此,请查看this question了解详细信息。