Postgres, разработанный в оригинале департаментом UC Berkeley Computer Science Department, был пионером многих объектно-ориентированных концепций, ставших теперь доступными в некоторых коммерческих БД. Он предоставляет поддержку языка SQL92/SQL99, целостности транзакций и расширяемости типов. PostgreSQL это открытый ресурс, потомок оригинального Berkeley-кода.
PostgreSQL это продукт, доступный бесплатно. Для использования поддержки PostgreSQL вам необходим PostgreSQL 6.5 или новее. PostgreSQL 7.0 или новее - для всех возможностей модуля PostgreSQL. PostgreSQL поддерживает многие кодировки символов, включая кодировку многобайтных символов. Текущая версия и информация о PostgreSQL находятся на http://www.postgresql.org/.
Чтобы включить поддержку PostgreSQL, необходима опция --with-pgsql[=DIR] при компиляции PHP. Если модуль совместно используемых/shared объектов доступен, PostgreSQL-модуль может быть загружен с использованием директивы extension в файле php.ini или функции dl(). Поддерживаемые ini-директивы описаны в файле php.ini-dist, поставляемом вместе с исходным кодом дистрибутива.
Предупреждение! |
---|
Использование модуля PostgreSQL с PHP 4.0.6 не рекомендуется из-за жучка в коде обработки уведомляющих сообщений. Используйте 4.1.0 или новее. |
Предупреждение! |
---|
Имена PostgreSQL-функций будут изменены в релизе 4.2.0 для подтверждения соответствия существующим стандартам кодировки. Большая часть новых имён будет иметь дополнительные символы подчёркивания, например, pg_lo_open(). Некоторые функции переименовываются для обеспечения целостности. например, pg_exec() в pg_query(). Старые имена можно использовать в 4.2.0 и в некоторых релизах 4.2.0, но они могут быть удалены в будущем. |
Старое имя | Новое имя |
---|---|
pg_exec() | pg_query() |
pg_getlastoid() | pg_last_oid() |
pg_cmdtuples() | pg_affected_rows() |
pg_numrows() | pg_num_rows() |
pg_numfields() | pg_num_fields() |
pg_fieldname() | pg_field_name() |
pg_fieldsize() | pg_field_size() |
pg_fieldnum() | pg_field_num() |
pg_fieldprtlen() | pg_field_prtlen() |
pg_fieldisnull() | pg_field_is_null() |
pg_freeresult() | pg_free_result() |
pg_result() | pg_fetch_result() |
pg_loreadall() | pg_lo_read_all() |
pg_locreate() | pg_lo_create() |
pg_lounlink() | pg_lo_unlink() |
pg_loopen() | pg_lo_open() |
pg_loclose() | pg_lo_close() |
pg_loread() | pg_lo_read() |
pg_lowrite() | pg_lo_write() |
pg_loimport() | pg_lo_import() |
pg_loexport() | pg_lo_export() |
Старый синтаксис pg_connect()/ pg_pconnect() будет не рекомендован, с целью поддержки в будущем асинхронных соединений. Пожалуйста, используйте строку соединения для pg_connect() и pg_pconnect().
Не все функции поддерживаются во всех построениях/builds. Это зависит от версии вашей libpq (The PostgreSQL C Client interface) и от того, как libpq скомпилирована. Если имеется отсутствующая функция, libpq не поддерживает возможности, требуемые для этой функции.
Важно также, чтобы вы использовали libpq более новую, чем PostgreSQL Server, с которым соединяетесь. Если вы используете libpq более старую, чем ожидает PostgreSQL Server, у вас будут проблемы.
Начиная с версии 6.3 (03/02/1998), PostgreSQL использует по умолчанию сокет домена unix. TCP-порт НЕ открывается по умолчанию. В таблице описаны эти новые возможности соединений. Этот сокет можно найти в in /tmp/.s.PGSQL.5432. Данная опция может быть включена флагом '-i' для postmaster, и его значением будет : "прослушивать TCP/IP-сокеты, а также сокеты Unix-домена".
Postmaster | PHP | Статус |
---|---|---|
postmaster & | pg_connect("dbname=MyDbName"); | OK |
postmaster -i & | pg_connect("dbname=MyDbName"); | OK |
postmaster & | pg_connect("host=localhost dbname=MyDbName"); | Невозможно соединиться с PostgreSQL server: connectDB() терпит неудачу: Работает ли postmaster и принимает ли TCP/IP (with -i) соединение по 'localhost' и порту '5432'? в /path/to/file.php на строке 20. |
postmaster -i & | pg_connect("host=localhost dbname=MyDbName"); | OK |
Соединение с PostgreSQL-сервером может быть установлено следующими парами значений в командной строке: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword ");
Предыдущий синтаксис: $conn = pg_connect ("host", "port", "options", "tty", "dbname") теперь не рекомендуется.
Переменные окружения влияют на поведение PostgreSQL server/client. Например, PostgreSQL-модуль будет искать переменную окружения PGHOST, если hostname отсутствует в строке соединения. Поддерживаемые переменные окружения отличаются в разных версиях. См. детали в PostgreSQL Programmer's Manual (libpq - Environment Variables).
Убедитесь, что вы установили переменные окружения для соответствующего пользователя. Используйте $_ENV или getenv() для проверки того, какие переменные окружения доступны текущему процессу.