2011-01-26 5 views
0

hbm2ddl.autoupdateに設定して、奇妙な休止状態に遭遇しています。hbm2ddl.auto = updateは、別のDBユーザーに敬意を表しませんか?

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

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

など。以下の表は

USER_A.TABLE_1 
USER_B.TABLE_2 

を存在し、私たちが構成された3つのテーブルを更新する場合:TABLE_1, TABLE_2, TABLE_3 User_Bへを使用して、我々はUSER_Bのために作成されていない

USER_A.TABLE_1 
USER_B.TABLE_2 
USER_B.TABLE_3 

TABLE_1で終わります。

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

これは誰にどんな意味を成しています:USER_A.TABLE_0USER_A.TABLE_1の名前を変更して再度更新したら、私たちは期待される結果に終わりますか? 「このサーバーでこのテーブルを既に作成しています(ユーザーは気にしません)」のような内部の休止状態のキャッシュのようなものがありますか?

これは構成上の問題ではないことを確認するためにかなりの時間を費やしていますが、これを別のマシン、異なる構成、またはIDEから再現して、USER_Aのパスワードがビルドディレクトリなどのどこにもないことを確認してください。私たちは100%確信しています、行動は記述されているとおりです - しかし、私たちはアイデアから完全に外れています。

これについては、この問題がしばらく残っているので、私はあなたの考えを聞いてとてもうれしいです。

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

答えて

0

は「ねえ、私はすでに、このサーバー上でこのテーブルを作成している(と私は、ユーザーを気にしない)」のように覚えて内部休止キャッシュのようなものがあります。

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

+0

あなたは正しいです:USER_BはUSER_Aにいくらかの特権を持ち、そのテーブルを見ることができました。これは奇妙な動作を引き起こしました。ユーザーの個人情報を修正することでこの問題が解決されました。ありがとう、partenon - あなたの答えは本当に多くの助けてくれました:) BTWと完全性のために:設定hibernate.default_schemaは実際には何の効果もありませんでした。再度、感謝します! – PeterP

関連する問題