1

有谁知道 Grails 是否有办法检查他试图创建的引用约束是否已经存在?

不幸的是,我无法删除数据库并再次创建它,因为它所处的环境以及我的公司政策、数据库的大小等。

它给我一个错误,我不希望它存在于生产环境中:

[main] ERROR hbm2ddl.SchemaUpdate  - Unsuccessful: alter table <TABLE> add constraint <CONSTRAINT> foreign key (<FK>) references <THEOTHERTABLE>
[main] ERROR hbm2ddl.SchemaUpdate  - ORA-02275: such a referential constraint already exists in the table.

编辑:当我尝试更正作为另一个表的外键的表列的名称时,就会发生这种情况。

Oracle 10g Grails 1.3.9

4

4 回答 4

3

使用hibernate.hbm2ddl.auto=validate.这不会尝试对您的架构进行任何更改,只是“验证”您在 POJO 中映射的内容与数据库架构。

您也可以将您的记录器设置为“调试”级别,然后您将检查 Hibernate 正在做什么。

于 2019-03-20T22:43:28.633 回答
0

我认为,就目前而言,这对我有用,如果其他人对此有所了解,我不会将其标记为答案。但我所做的是:

在测试和生产环境中,我从我的 DataSource.groovy 中删除了“dbCreate”指令,这样 Grails (Hibernate) 不会尝试创建任何东西,而只是使用他找到的东西。

这对我有用,因为在这些环境中,我的 grails DB 用户没有任何特权来创建任何东西,所以它甚至尝试都没用。

于 2013-11-04T20:19:09.863 回答
0

从 application.properties 中删除 spring.jpa.hibernate.ddl-auto=update

于 2020-01-19T04:19:07.877 回答
0

由于 application.properties 中的行,我遇到了这个错误

spring.jpa.generate-ddl = true

这会尝试为映射生成 sql 外键。如果您在数据库中配置了外键关系,则此配置行将尝试覆盖它。从应用程序属性中删除这一行解决了我的问题。

于 2019-12-09T19:26:01.193 回答