sql >> Base de Datos >  >> RDS >> Oracle

Más de una tabla encontrada en el espacio de nombres (,) - SchemaExtractionException

Tuve el mismo problema y pude profundizar en el código para descubrir la causa, al menos en mi caso. No sé si será el mismo problema para ti, pero esto puede ser útil.

Desde su seguimiento de pila, puedo ver que tiene hibernate.hbm2ddl.auto configurado para actualizar el esquema. Como parte de esto, intenta buscar los metadatos de todas las tablas que conoce Hibernate y una de ellas obtiene una respuesta ambigua porque la consulta de metadatos devuelve más de una sola fila de metadatos de tabla o vista.

En mi caso, esto fue causado por nuestra convención de nomenclatura para las tablas. Teníamos una tabla llamada (digamos) "AAA_BBB" para la cual esto iba mal. Ahora, el uso de un guión bajo en el nombre de la tabla es perfectamente aceptable hasta donde yo sé y es una práctica bastante común. Sin embargo, el guión bajo también es el comodín de SQL para un solo carácter; buscando en el código los metadatos de la base de datos, puedo ver que está haciendo un método "WHERE table_name LIKE ..." en el método DatabaseMetaData.getTables(...), que es lo que hibernate está usando aquí.

Ahora, en mi esquema también tenía una segunda tabla llamada "AAA1BBB" y, por lo tanto, ambas coincidían con la búsqueda de metadatos y devolvía una fila de metadatos para cada una de estas tablas. El método de hibernación está escrito para fallar si el conjunto de resultados de la búsqueda de metadatos de la tabla devuelve más de una fila. Supongo que debería examinar las filas disponibles y encontrar si hay una que coincida exactamente con el nombre de la tabla especificada.

Probé esto tanto para Oracle como para MySQL con el mismo resultado.