2012-06-25 12 views

Respuesta

18

Los catálogos y esquemas son "espacios de nombres" que define en el lado del servidor de la base de datos. Algunas bases de datos contienen esquemas, algunas contienen catálogos y algunas contienen ambas. Al iniciar sesión con un usuario específico, algunas bases de datos predeterminan el esquema/catálogo en el espacio de nombres del usuario, haciendo que la tabla no sea visible para otros usuarios, lo que provoca la necesidad de utilizar un espacio de nombres "común". Por lo tanto, dependiendo de la base de datos que esté utilizando para respaldar sus datos, es posible que desee ignorar esas configuraciones.

Para MySQL, es posible que desee ignorar esas configuraciones. Esto se debe a que la parte "base de datos" de la URL JDBC (la que está después de la última barra inclinada) apunta al nombre de la base de datos, que es semánticamente idéntica a la del esquema (para MySQL).

+4

Solo para completar la imagen: en MySQL, los esquemas no son compatibles y un catálogo se asigna a una base de datos. –

+0

@a_horse_with_no_name: ¿Estás seguro? Pensé que era todo lo contrario. Si simplemente reemplaza "base de datos" por "esquema" en los comandos DDL de MySQL, debería funcionar. – jpkrohling

+2

Estoy seguro de que sí. Al menos eso es lo que dice el controlador JDBC. 'DatabaseMetaData.getCatalogTerm()' devuelve "Database" y 'DatabaseMetaData.getSchemaTerm()' devuelve null. Los diversos métodos 'supportsSchemaInXXX()' devuelven falso y 'supportsCatalogInXXX()' devuelve verdadero. –

Cuestiones relacionadas