Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Znaleziono więcej niż jedną tabelę w przestrzeni nazw (,) — SchemaExtractionException

Miałem ten sam problem i byłem w stanie dokopać się do kodu, aby znaleźć przyczynę, przynajmniej w moim przypadku. Nie wiem, czy dla Ciebie będzie to ten sam problem, ale może to być pomocne.

Ze śledzenia stosu widzę, że masz ustawiony hibernate.hbm2ddl.auto do aktualizacji schematu. W ramach tego próbuje wyszukać metadane dla wszystkich tabel, o których wie hibernacja, i dla jednej z nich otrzymuje niejednoznaczną odpowiedź, ponieważ zapytanie o metadane zwraca więcej niż jeden wiersz metadanych tabeli lub widoku.

W moim przypadku było to spowodowane naszą konwencją nazewnictwa tabel. Mieliśmy stół o nazwie (powiedzmy) „AAA_BBB”, dla którego to się nie udało. O ile mi wiadomo, użycie podkreślenia w nazwie tabeli jest całkowicie dopuszczalne i jest to dość powszechna praktyka. Jednak podkreślenie jest również symbolem wieloznacznym SQL dla pojedynczego znaku; patrząc w kodzie dla metadanych bazy danych widzę, że robi "WHERE nazwa_tabeli LIKE ..." w metodzie DatabaseMetaData.getTables(...), której używa tutaj hibernacja.

Teraz w moim schemacie miałem również drugą tabelę o nazwie „AAA1BBB”, a zatem obie pasowały do ​​wyszukiwania metadanych, a więc zwrócił wiersz metadanych dla każdej z tych tabel. Metoda hibernacji jest napisana tak, aby po prostu spadła, jeśli zestaw wyników z wyszukiwania metadanych tabeli zwróci więcej niż jeden wiersz. Sądzę, że powinien zbadać dostępne wiersze i znaleźć, czy istnieje taki, który jest dokładnym dopasowaniem do określonej nazwy tabeli.

Przetestowałem to zarówno dla Oracle, jak i MySQL z tym samym wynikiem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. czy twierdzenia, że ​​Oracle jest trudno zarządzać prostymi zadaniami, są prawdziwe? czy nie ma do tego wysokiej jakości aplikacji administracyjnych?

  2. Baza danych Oracle do wysłania powiadomienia / Wywołaj metodę java po osiągnięciu czasu określonego w kolumnie

  3. Uzyskiwanie poprawnego czasu od daty Oracle w Solr DataImportHandler

  4. Jak zrozumieć statystyki pliku śledzenia w Oracle. Takich jak procesor, upływający czas, zapytanie ... itp

  5. Konwersja z RAW(16) Oracle na GUID .NET