PostgreSQLPostgreSQL
PostgreSQL, stworzony początkowo na Wydziale Nauk Komputerowych
Uniwersytetu Berkeley, był pionierem wielu koncepcji obiektowych
obecnie dostępnych w komercyjnych bazach danych. Jest zgodny z
ze standardami języka SQL92/SQL3, obsługuje transakcje i pozwala
definiować własne typy danych. PostgreSQL jest wolno-dostępnym
spadkobiercą oryginalnego kodu Berkeley.
PostgreSQL jest produktem Open Source i jest dostępny za darmo.
Aby korzystać wsparcia dla PosgreSQL-a, będziesz potrzebował
PostgreSQL w wersji 6.5 lub nowszej. Aby wykorzystać wszystkie
możliwości modułu potrzebny jest PostgreSQL 7.0 lub nowszy.
PostgreSQL wspiera wiele stron kodowych, z wielobajtowymi włącznie.
Aktualna wersja i więcej informacji jest dostępne
tu: &url.pgsql;.
W celu uruchomienia wsparcia dla PostgreSQL-a, należy użyć opcji
w czasie
kompilacji PHP.
Jeśli jest dostępny współdzielony moduł, może on być załadowany
przez wpisanie dyrektywy extension
w pliku &php.ini; lub funkcji dl.
Wspierane dyrektywy ini są opisane w pliku
php.ini-dist który jest zawarty w dystrybucji
źródłowej.
Używanie modułu PostgreSQL z PHP 4.0.6 nie jest zalecane ze względu na
błąd w obsłudze komunikatów. Zaleca się używanie wersji 4.1.0 lub
nowszej.
Nazwy funkcji PostgreSQL będą zmienione w wersji 4.2.0 w celu dostosowania
do obecnych standardów kodowania. Większość nowych nazw będzie
miała dodatkowe podkreślenia np. pg_lo_open(). Niektóre funkcje
będą miały zmienione nazwy, aby ujednolicić nazewnictwo np.
pg_exec() na pg_query().
Stare nazwy będzie można używać w wersji 4.2.0 i w kilku kolejnych,
mogą jednak być usunięte w przyszłości.
Zmienione nazwy funkcjiStara nazwaNowa nazwapg_execpg_querypg_getlastoidpg_last_oidpg_cmdtuplespg_affected_rowspg_numrowspg_num_rowspg_numfieldspg_num_fieldspg_fieldnamepg_field_namepg_fieldsizepg_field_sizepg_fieldnumpg_field_numpg_fieldprtlenpg_field_prtlenpg_fieldisnullpg_field_is_nullpg_freeresultpg_free_resultpg_resultpg_fetch_resultpg_loreadallpg_lo_read_allpg_locreatepg_lo_createpg_lounlinkpg_lo_unlinkpg_loopenpg_lo_openpg_loclosepg_lo_closepg_loreadpg_lo_readpg_lowritepg_lo_writepg_loimportpg_lo_importpg_loexportpg_lo_export
Stara składnia pg_connect/
pg_pconnect będzie wycofywana aby zapewnić
w przyszłości wsparcie dla asynchronicznych połączeń. Prosimy
używać łańcucha połączeniowego dla pg_connect
i pg_pconnect.
Nie wszystkie funkcje są wspierane przez wszystkie wersje. Zależy
to od twojej wersji libpq (Interfejs C klienta PostgreSQL) i sposobu jej
kompilacji. Jeśli brakuje jakiejś funkcji, libpq nie będzie wspierać
danej funkcjonalności.
Jest istotne żeby używać nowszej biblioteki libpq niż serwer PostgreSQL
z którym się łączymy. Jeśli libpq jest starsze niż oczekiwane przez serwer
PostgreSQL, możesz mieć problemy.
Od wersji 6.3 (03/02/1998) PostgreSQL używa gniazdek domen unixowych
("unix domain socket"). Port TCP NIE będzie domyślnie otwarty.
Poniższa tabela pokazuje te nowe rodzaje połączeń. Plik gniazdka
znajduje się w /tmp/.s.PGSQL.5432.
Ta opcja może być odblokowana przez użycie flagi '-i' z poleceniem
postmaster i oznacza: "nasłuchuj na gniazdkach
TCP/IP oraz na gniazdkach domen unixowych".
PostgreSQL Postmaster i PHPPostmasterPHPStatuspostmaster &pg_connect("dbname=MyDbName");OKpostmaster -i &pg_connect("dbname=MyDbName");OKpostmaster &pg_connect("host=localhost dbname=MyDbName");
Unable to connect to PostgreSQL server: connectDB() failed:
Is the postmaster running and accepting TCP/IP (with -i)
connection at 'localhost' on port '5432'? in
/path/to/file.php on line 20.
postmaster -i &pg_connect("host=localhost dbname=MyDbName");OK
Połączenie do serwera PostgreSQL może być nawiązane poprzez ustawienie
następujących wartości w łańcuchu połączenia: $conn =
pg_connect("host=myHost port=myPort tty=myTTY options=myOptions
dbname=myDB user=myUser password=myPassword ");
Poprzednia składnia:
$conn = pg_connect ("host", "port", "options", "tty", "dbname")
jest wycofywana.
Zmienne środowiskowe wpływają na zachowanie klienta i serwera
PostgreSQL. Przykładowo, moduł PostgreSQL będzie poszukiwał zmiennej
PGHOST kiedy nazwa serwera będzie pominięta w łańcuchu połączeniowym.
Używane zmienne środowiskowe zmieniają się wraz z wersjami. Szczegóły
można znaleźć w PostgreSQL Programmer's Manual (libpq - Environment
Variables).
Upewnij się że ustawiłeś zmienne środowiskowe dla właściwego użytkownika.
Użyj $_ENV lub getenv aby sprawdzić
jakie zmienne środowiskowe są dostępne dla bieżącego procesu.
Ustawianie domyślnych parametrów
Poczynając od PostgreSQL 7.1.0, jedno pole typu text może pomieścić
do 1GB. Wcześniejsze wersje limitowały wielkość pola do rozmiaru bloku
(domyślnie 8KB, maksymalnie 32KB, definiowane przy kompilacji).
Użycie interfejsu wielkich obiektów (LO - Large Objects) wymaga
zamknięcia go wewnątrz bloku transakcji. Transakcja rozpoczyna
się poleceniem SQL BEGIN i - jeśli transakcja
się powiedzie - kończy się poleceniem COMMIT lub
END. Jeśli transakcja nie powiedzie się,
powinna być zakończona poleceniem ROLLBACK
lub ABORT.
Używanie wielkich obiektów (Large Objects)
]]>
Nie wolno zamykać połączenia do serwera PostgreSQL, przed zamknięciem
wielkiego obiektu.
&reference.pgsql.functions;