2012-06-25 17 views

Odpowiedz

18

Katalogi i schematy są „przestrzenie nazw”, które definiują po stronie serwera bazy danych. Niektóre bazy danych zawierają schematy, niektóre zawierają katalogi, a niektóre zawierają oba. Podczas logowania się do określonego użytkownika niektóre bazy danych domyślnie umieszczają schemat/katalog w przestrzeni nazw użytkownika, co powoduje, że tabela nie jest widoczna dla innych użytkowników, co powoduje konieczność używania "wspólnej" przestrzeni nazw. Tak więc, w zależności od bazy danych, której używasz do kopiowania danych, możesz zignorować te ustawienia.

Dla MySQL możesz chcieć zignorować te ustawienia. Dzieje się tak dlatego, że część "bazy danych" adresu URL JDBC (jedna po ostatnim ukośniku) wskazuje na nazwę bazy danych, która jest semantycznie identyczna ze schematem (dla MySQL).

+4

Tylko po to, aby ukończyć obrazek: w schematach MySQL nie są obsługiwane, a katalog jest mapowany do bazy danych. –

+0

@a_horse_with_no_name: Jesteś pewien? Myślałem, że jest odwrotnie. Jeśli po prostu zastąpisz "bazę danych" przez "schemat" w komendach MySQL DDL, powinno to działać. – jpkrohling

+2

Jestem pewien, że tak. Tak przynajmniej mówi sterownik JDBC. 'DatabaseMetaData.getCatalogTerm()' zwraca "Baza danych" i 'DatabaseMetaData.getSchemaTerm()' zwraca null. Różne metody 'supportsSchemaInXXX()' zwracają wartość false, a 'supportsCatalogInXXX()' zwracają wartość true. –

Powiązane problemy