質問

奇妙な冬眠行動に遭遇しています hbm2ddl.auto に設定 update.

テストセットアップには、ベータアプリケーション用のテーブルが含まれている2つのデータベースユーザーがあり、もう1つは主に開発に使用されます。 IE異なるユーザーの同じテーブル名。新しいテーブルを作成する場合、使用することでそうします hbm2ddl.auto=update.

突然、奇妙な動作は次のとおりです。更新プロセスは、間違ったユーザーを備えた既存のテーブルを探し、適切なユーザーで見つからないユーザーを作成します。

たとえば、次のテーブルが存在する場合

USER_A.TABLE_1
USER_B.TABLE_2

また、構成された3つのテーブルで更新します。 TABLE_1, TABLE_2, TABLE_3 user_bを使用して、最終的にはなります

USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

TABLE_1 のために作成されていません USER_B. 。改名後 USER_A.TABLE_1USER_A.TABLE_0 もう一度更新すると、予想される結果が得られます。

USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

これは誰にとっても理にかなっていますか? 「このサーバーでこのテーブルをすでに作成している(そしてユーザーについては気にしない)のようなものを思い出して、内部の冬眠キャッシュのようなものがありますか。

これが構成の問題ではないことを安心させるためにかなりのテストを費やしました。これをさまざまなマシン、異なる構成、ANTまたはIDEを使用して再現しているため、User_aのパスワードがビルドディレクトリのどこにも見つからないことを確認してください。確かに、行動は説明されているとおりです - しかし、私たちは何が起こるかを完全に考えていません。

この問題はしばらくの間、しつこいので、これについてのあなたのアイデアを聞いてとてもうれしいです。

どうもありがとう、ピーター

役に立ちましたか?

解決

「このサーバーでこのテーブルをすでに作成している(そしてユーザーについては気にしない)のようなものを思い出して、内部の冬眠キャッシュのようなものがありますか。

いいえ。おそらく起こっているのは、user_aがuser_bアカウントで作成されたテーブルを見ることができるということです。どのデータベースを使用しているかは明確ではありませんが、異なるユーザーのみを使用することに加えて、2つの異なるスキーマを使用するようにHibernateを構成しようとします。また、プロパティ「hibernate.default_schema」を設定しようとすることもできますが、これが問題を解決するかどうかはわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top