Oracle
 sql >> база данни >  >> RDS >> Oracle

Намерена е повече от една таблица в пространството от имена (, ) - SchemaExtractionException

Имах същия проблем и успях да разровя кода, за да открия причината, поне в моя случай. Не знам дали ще бъде същия проблем и за вас, но това може да е полезно.

От проследяването на стека ви виждам, че сте настроили hibernate.hbm2ddl.auto за надграждане на схемата. Като част от това, той се опитва да търси метаданните за всички таблици, за които hibernate знае, и за една от тях получава двусмислен отговор, тъй като заявката за метаданни връща повече от един ред метаданни за таблица или изглед.

В моя случай това беше причинено от нашата конвенция за именуване на таблици. Имахме таблица, наречена (да кажем) "AAA_BBB", за която това се обърка. Сега използването на долна черта в името на таблицата е напълно приемливо, доколкото ми е известно, и е доста обичайна практика. Долната черта обаче е също и SQL заместващ знак за един знак; гледайки в кода за метаданните на базата данни, виждам, че прави "WHERE table_name LIKE ..." в метода DatabaseMetaData.getTables(...), което е това, което hibernate използва тук.

Сега в моята схема имах и втора таблица, наречена "AAA1BBB" и следователно и двете съответстваха на търсенето на метаданни и така върна ред с метаданни за всяка от тези таблици. Методът на хибернация е написан така, че просто да падне, ако наборът от резултати от търсенето на метаданни в таблицата върне повече от един ред. Предполагам, че трябва да прегледа наличните редове и да намери дали има такъв, който съвпада точно с указаното име на таблица.

Тествах това както за Oracle, така и за MySQL със същия резултат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01843 не е валиден месец- Сравняване на дати

  2. LENGTH() Функция в Oracle

  3. Грешка в буфера на символния низ е твърде малък в съхранената процедура на Oracle

  4. SQL Предизвикателство/Пъзел:Дадено е проследяване на стека - Как да намерите най-горния елемент във всяка точка от времето?

  5. Oracle ROWID като параметър на функция/процедура