2012-06-25 9 views

risposta

18

I cataloghi e gli schemi sono "spazi dei nomi" definiti sul lato server del database. Alcuni database contengono schemi, alcuni contengono cataloghi e altri contengono entrambi. Quando si effettua l'accesso con un utente specifico, alcuni database predefiniscono lo schema/catalogo nello spazio dei nomi dell'utente, facendo sì che la tabella non sia visibile agli altri utenti, causando la necessità di utilizzare uno spazio dei nomi "comune". Pertanto, a seconda del database che si sta utilizzando per il backup dei dati, è possibile ignorare tali impostazioni.

Per MySQL, è possibile ignorare tali impostazioni. Questo perché la parte "database" dell'URL JDBC (quella dopo l'ultima barra) punta al nome del database, che è semanticamente identico allo schema (per MySQL).

+4

Solo per completare l'immagine: negli schemi MySQL non sono supportati e un catalogo si associa a un database. –

+0

@a_horse_with_no_name: sei sicuro? Pensavo fosse il contrario. Se si sostituisce semplicemente "database" con "schema" nei comandi DDL MySQL, dovrebbe funzionare. – jpkrohling

+2

Sono sicuro di si. Almeno questo è quello che dice il driver JDBC. 'DatabaseMetaData.getCatalogTerm()' restituisce "Database" e 'DatabaseMetaData.getSchemaTerm()' restituisce null. I vari metodi 'supportsSchemaInXXX()' restituiscono tutti i falsi e 'supportsCatalogInXXX()' tutti restituiscono true. –

Problemi correlati