sql >> Database >  >> RDS >> Oracle

Meer dan één tabel gevonden in naamruimte (, ) - SchemaExtractionException

Ik heb hetzelfde probleem gehad en was in staat om naar de code te graven om de oorzaak te achterhalen, althans in mijn geval. Ik weet niet of dit voor jou hetzelfde probleem zal zijn, maar dit kan nuttig zijn.

Uit je stacktracering kan ik zien dat je de hibernate.hbm2ddl.auto hebt ingesteld om het schema te upgraden. Als onderdeel hiervan probeert het de metadata op te zoeken voor alle tabellen waarvan de hibernate weet en voor een van hen een dubbelzinnig antwoord te krijgen omdat de metadataquery meer dan een enkele rij tabel- of view-metadata retourneert.

In mijn geval werd dit veroorzaakt door onze naamgevingsconventie voor tabellen. We hadden een tafel genaamd (zeg) "AAA_BBB" waarvoor dit fout ging. Nu is het gebruik van een onderstrepingsteken in de tabelnaam volkomen acceptabel voor zover ik weet en is het vrij gebruikelijk. Het onderstrepingsteken is echter ook het SQL-jokerteken voor een enkel teken; als ik in de code naar de metadata van de database kijk, zie ik dat het een "WHERE table_name LIKE ..." doet in DatabaseMetaData.getTables (...) -methode, wat hibernate hier gebruikt.

Nu, in mijn schema had ik ook een tweede tabel genaamd "AAA1BBB" en daarom kwamen beide overeen met de metadata-lookup en dus retourneerde het een metadatarij voor elk van deze tabellen. De hibernate-methode is geschreven om gewoon naar beneden te vallen als de resultaatset van het opzoeken van metagegevens van de tabel meer dan één rij retourneert. Ik vermoed dat het de beschikbare rij(en) moet onderzoeken en moet uitzoeken of er een is die exact overeenkomt met de opgegeven tabelnaam.

Ik heb dit getest voor zowel Oracle als MySQL met hetzelfde resultaat.



  1. classNotFoundException bij laden van JDBC-stuurprogramma

  2. ETL vs ELT:wij stellen, u oordeelt

  3. Voeg huidige datum/tijd in met now() in een veld met MySQL/PHP

  4. Toegang tot een MySQL-database via Jupyter Notebook met Python3