czwartek, 5 maja 2011

Postgresql i schema

Kupujesz hosting wraz z Db Postgresql 1x, okazuje się że domyślny schemat ma prawa
Public -> Postgres
i co teraz?
Brak możliwości edycji schematu i założenia w nim jakichkolwiek tabel itd..

Jest ratunek, stwórz nowy schemat:
postgres=# CREATE SCHEMA myschema;
Wszystko pięknie, ale większość osób zapomina jeszcze o jednej
rzeczy, mi zajęło to jakieś 30 minut..
Do poprawnego działania bazy danych ustawiamy zmienną search_path.
postgres=# ALTER USER user SET search_path TO new_schema;
postgres=# SET search_path TO new_schema;
# sprawdzamy:
postgres=#SHOW search_path;

To teraz trochę teorii, otóż Ścieżka przeszukiwania (The Schema Search Path)
określa porządek, według którego przeszukujemy schematy w celu znalezienia pewnego obiektu
(np. tabeli).
W przykładzie powyższym był stworzony w schemacie public jako ten do którego modyfikacji nie miałem dostępu. Domyślnie ustawienia ścieżki przeszukiwania przedstawiają się następująco:
postgres=# SHOW search_path;
postgres=# search_path
postgres=# --------------
postgres=# $user,public
$user to nazwa aktualnego użytkownika (w pierwszej kolejności będzie przeszukiwany schemat o nazwie takiej jak użytkownik)

Ważne: Postgresql nie tworzy automatycznie schematu dla
każdego użytkownika (w Oracle tak jest), domyślny schemat
public będzie schematem dla wszystkich niezakwalifikowanych
nigdzie obiektów.

Aby dołożyć jakiś schemat do ścieżki?:

postgres=# SET search_path TO new_schema, public;
- dostęp do bazy (bez specyfikowania schematu)
Aby na stałe ustalić ścieżkę piszemy:
postgres=# ALTER USER user SET search_path TO new_schema;

Przy okazji znalazłem:
pdpl_postgres.pdf
archiwizacja.pdf
ddl-schemas
gotchas-administration.html