我使用的是grails 2.0.3,数据库迁移(liquibase)插件1.1和postgres 9.1。
我看到的是我认为这些其他用户描述的问题,但有皱纹:
皱纹就是:
我对该问题的理解是liquibase正在检查其维护表是否存在的默认模式,然后尝试在正确的位置创建表,即非默认模式。但当然,它们在第一次执行后就已存在。通过指定命令行选项似乎有一种解决方法,但我没有这个选项,因为要求在部署的grails应用程序中自动运行。
有没有办法让数据库迁移插件做我需要的?告诉DBA以不同的方式组织模式不是一种选择。
提前致谢, Ray A. Conner
答案 0 :(得分:3)
前提条件和重构命令采用属性schemaName。
<tableExists schemaName="myschema" tableName="..."/>
<createTable schemaName="myschema" tableName="..."/>
您也可以参数化它:
<databaseChangeLog ..>
<property name="schema.name" value="myschema"/>
....
<changeset ...>
<createTable schemaName="${schema.name]" tableName="..."/>
</changeset>
</databaseChangeLog>
对于Liquibase本身,你可以设置defaultSchemaName,在你的情况下(Grails)这应该是:
grails.plugin.databasemigration.updateOnStartDefaultSchema
答案 1 :(得分:3)
对我来说,这是缺少的所有者权利。这样,登录用户就找不到该表,但也无法创建该表,因为它就在那里。
我的解决方法是将所有者更改为正确的人。