sql >> Databasteknik >  >> RDS >> Oracle

Mer än en tabell hittades i namnutrymmet (, ) - SchemaExtractionException

Jag har haft samma problem och kunde gräva ner till koden för att ta reda på orsaken, åtminstone i mitt fall. Jag vet inte om det kommer att vara samma problem för dig men det här kan vara till hjälp.

Från din stackspårning kan jag se att du har hibernate.hbm2ddl.auto inställt för att uppgradera schemat. Som en del av detta försöker den slå upp metadata för alla tabeller som viloläge känner till och för en av dem att få ett tvetydigt svar eftersom metadatafrågan returnerar mer än en enda rad med tabell- eller vymetadata.

I mitt fall orsakades detta av vår namnkonvention för tabeller. Vi hade ett bord som hette (säg) "AAA_BBB" för vilket det gick fel. Nu är användningen av ett understreck i tabellnamnet helt acceptabelt så vitt jag vet och är ganska vanlig praxis. Men understrecket är också SQL-jokertecken för ett enskilt tecken; när jag letar i koden för databasens metadata kan jag se att den gör en "WHERE table_name LIKE ..." i DatabaseMetaData.getTables(...)-metoden, vilket är vad hibernate använder här.

Nu, i mitt schema hade jag också en andra tabell som heter "AAA1BBB" och därför matchade båda dessa metadatasökningen och så den returnerade en metadatarad för var och en av dessa tabeller. Hibernate-metoden skrivs för att bara falla ner om resultatuppsättningen från tabellmetadatasökningen returnerar mer än en rad. Jag skulle gissa att den borde undersöka de tillgängliga raderna och se om det finns en som är exakt matchad med det angivna tabellnamnet.

Jag testade detta för både Oracle och MySQL med samma resultat.



  1. MYSQL-sortering med doktrin

  2. SQL Server - In-sats med en deklarerad variabel

  3. Vad är bättre - många små bord eller ett stort bord?

  4. MySQL vs. MongoDB