有没有人知道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
答案 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外键。如果已在数据库中配置了外键关系,则此配置行将尝试覆盖它。从应用程序属性中删除此行解决了我的问题。