8

私は grails 2.0.3、データベース移行 (liquibase) プラグイン 1.1、および postgres 9.1 を使用しています。

これらの他のユーザーが説明したのと同じ問題であると思われるものを見ていますが、しわがあります。

しわは次のとおりです。

  1. grails とデータベース移行プラグインを使用しています。
  2. 本番データベースはデフォルトのスキーマを使用しません。
  3. 開発者は実際の本番データベースにアクセスできないため、開始時に自動データベース移行を使用する必要があります (grails.plugin.databasemigration.updateOnStart = true)。

この問題についての私の理解では、liquibase はメンテナンス テーブルの存在についてデフォルト スキーマをチェックしており、適切な場所である非デフォルト スキーマにテーブルを作成しようとしています。しかしもちろん、それらは最初の実行後にすでに存在しています。コマンドラインオプションを指定することで回避策があるようですが、デプロイされたgrailsアプリ内で自動実行する必要があるため、そのオプションはありません。

データベース移行プラグインに必要なことをさせる方法はありますか? スキーマを別の方法で編成するように DBA に指示することは、オプションではありません。

よろしくお願いします、レイ・A・コナー

4

2 に答える 2

3

私にとっては、所有者の権利がありませんでした。そうすれば、ログインしたユーザーはテーブルを見つけることができませんでしたが、そこにあったため作成することもできませんでした。

私の修正は、所有者を正しい人に変更することでした。

于 2021-02-04T19:11:16.277 に答える
2

前提条件とリファクタリング コマンドは、属性 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
于 2012-10-07T19:18:13.690 に答える