1

私はここのチュートリアルに従おうとしています。

BuildConfig.groovyファイルでデータベース移行プラグインの依存関係を宣言してruntime ":database-migration:1.0"からコンパイルしました。dbCreateまた、DataSource.groovyファイルの本番設定の行をコメントアウトしています。私の本番データベースは空で、テーブルがありません。

次に、2つのコマンドを実行して、最初の変更ログを生成しようとします。

grails dbm-create-changelog
grails prod dbm-generate-gorm-changelog --add changelog-1.0.groovy

問題は、最初のコマンドが本番データベースではなく開発データベースにテーブルを作成することです。次に、本番データベースにテーブルが作成されていないため、2番目のコマンドは作成するはずのファイルの作成に失敗しchangelog-1.0.groovyます(私は推測します)。Hibernateがデータベースのインデックス作成に失敗したというエラーがいくつか発生し、次のようなエラーが発生します。

| Error 2012-07-10 08:40:28,704 [Compass Gps Index [pool-11-thread-2]] ERROR util.JDBCExceptionReporter  - Table 'mygrailsapp_prod.some_class' doesn't exist

DataSource.groovyファイルで開発設定をコメントアウトしても、Grailsは開発データベースを探しています。prod2番目のコマンドを削除すると、changelog-1.0.groovyファイルは正常に生成されますが、開発データベース(最初のコマンドを実行するまでテーブルがなかった)から生成されたため、どういうわけか混乱するかどうかはわかりませんが、指摘する必要があります。 )本番データベースの代わりに。

私はここで何が間違っているのですか?

4

1 に答える 1

1
The problem is the first command creates tables in my development database, not my production database.

これはおそらく、開発環境に対して実行されていて、dbCreateが「更新」に設定されているためです。

Then the second command fails to create the changelog-1.0.groovy file it is supposed to create (I assume) because the production database never had any tables created.

それは完全に正確ではありません。あなたが投稿したリンクから、そのステップの後に「データベースは空のままになることに注意してください!」と書かれています。データベーステーブルは、dbm-updateコマンドを実行した場合にのみ作成されます。変更ログが実際に実行されるのはそのときです。

リンクしたブログは、2番目のコマンドのprodスイッチで完全に正確ではないと思います。ドメインについては、環境固有のものはありません。ですから、それをオフのままにしておけば、続行できるはずです。そのエラーがスローされる理由がわかりません。それは本当に意味がありません。

于 2012-07-10T15:02:05.930 に答える