0

我有一个应用程序可以根据需要在格式更改时创建其表。当表没有通过简单的功能测试时,它们将被删除并重新创建。到目前为止效果很好,但现在我改变了一些约束:我改变了一个主键并添加了一个外键。

现在 drop 失败,但有异常:

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 语句对所需的表格式有效,但对之前使用的格式无效(这是被检测为不可用并触发删除的表格式)。

如何在不考虑约束的情况下删除表?(我总是删除所有相关的表 - 因此在这种情况下我不需要约束检查)

4

2 回答 2

2

如果您告诉 Slick 存在约束,那么 Slick 将在删除表时尝试删除它们。您可以使用纯 SQL显式运行所需的 SQL 语句。您还可以createModel在驱动程序中使用 Slick2 并检查约束,这样有条件地做事。

于 2014-05-27T16:03:59.507 回答
0

我不熟悉该框架,但如果约束应该在新表上而不是旧表上,您可能需要更改分配属性的位置。话虽如此,请检查此问题以获取详细信息。

于 2014-05-27T15:17:07.197 回答