sql >> データベース >  >> RDS >> Oracle

名前空間(、)で複数のテーブルが見つかりました-SchemaExtractionException

    私も同じ問題を抱えており、少なくとも私の場合は、コードを掘り下げて原因を突き止めることができました。それがあなたにとって同じ問題になるかどうかはわかりませんが、これは役立つかもしれません。

    スタックトレースから、スキーマをアップグレードするようにhibernate.hbm2ddl.autoが設定されていることがわかります。この一環として、hibernateが認識しているすべてのテーブルのメタデータを検索しようとしていますが、メタデータクエリが複数行のテーブルまたはビューのメタデータを返しているため、そのうちの1つがあいまいな回答を取得しています。

    私の場合、これはテーブルの命名規則が原因でした。これがうまくいかなかった(たとえば)「AAA_BBB」というテーブルがありました。現在、テーブル名にアンダースコアを使用することは、私が知る限り完全に受け入れられ、非常に一般的な方法です。ただし、アンダースコアは1文字のSQLワイルドカードでもあります。データベースメタデータのコードを見ると、DatabaseMetaData.getTables(...)メソッドで「WHEREtable_name LIKE ...」を実行していることがわかります。これは、hibernateがここで使用しているものです。

    さて、私のスキーマには「AAA1BBB」という2番目のテーブルもあり、両方ともメタデータルックアップと一致したため、これらの各テーブルのメタデータ行が返されました。 hibernateメソッドは、テーブルメタデータルックアップの結果セットが複数の行を返した場合にフォールダウンするように記述されています。使用可能な行を調べて、指定されたテーブル名と完全に一致する行があるかどうかを確認する必要があると思います。

    OracleとMySQLの両方でこれをテストしたところ、同じ結果が得られました。



    1. すべての便利な11gダイナミックパフォーマンスビュー

    2. MySQL BOOL列とBOOLEAN列のデータ型の違いは何ですか?

    3. 最短と最長のCITY名を使用してSTATIONの2つの都市をクエリします。

    4. Python、mysql.connectorエラー:フェッチ元に​​結果セットがありません。 cgitbは、関数に渡される正しい値を示します