Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Mais de uma tabela encontrada no namespace (, ) - SchemaExtractionException


Eu tive o mesmo problema e consegui cavar o código para descobrir a causa, pelo menos no meu caso. Não sei se será o mesmo problema para você, mas isso pode ser útil.

Do seu rastreamento de pilha, posso ver que você tem o hibernate.hbm2ddl.auto definido para atualizar o esquema. Como parte disso, ele está tentando procurar os metadados para todas as tabelas que o hibernate conhece e para uma delas obter uma resposta ambígua porque a consulta de metadados está retornando mais de uma única linha de metadados de tabela ou visualização.

No meu caso, isso foi causado por nossa convenção de nomenclatura para tabelas. Tínhamos uma tabela chamada (digamos) "AAA_BBB" para a qual isso estava dando errado. Agora, o uso de um sublinhado no nome da tabela é perfeitamente aceitável até onde sei e é uma prática bastante comum. No entanto, o sublinhado também é o curinga SQL para um único caractere; olhando no código para os metadados do banco de dados, posso ver que está fazendo um "WHERE table_name LIKE ..." no método DatabaseMetaData.getTables(...), que é o que o hibernate está usando aqui.

Agora, no meu esquema, eu também tinha uma segunda tabela chamada "AAA1BBB" e, portanto, ambas correspondiam à pesquisa de metadados e, portanto, retornavam uma linha de metadados para cada uma dessas tabelas. O método hibernate é escrito para cair apenas se o conjunto de resultados da pesquisa de metadados da tabela retornar mais de uma linha. Eu acho que ele deve examinar as linhas disponíveis e descobrir se há uma correspondência exata com o nome da tabela especificada.

Eu testei isso para Oracle e MySQL com o mesmo resultado.