Grails - ORA-02275 - 这种参照约束已经存在

时间:2013-11-04 18:41:44

标签: oracle hibernate grails constraints

有没有人知道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.

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

Oracle 10g Grails 1.3.9

3 个答案:

答案 0 :(得分:0)

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

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

这对我有用,因为在这些环境中,我的Grails DB User没有任何创造任何东西的特权,因此它甚至无法尝试。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

spring.jpa.generate-ddl = true

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