Для PostgreSQL

pgsql://user:password@host[:port]|[local]/database?
   charset=значение&
   ClientCharset=кодировка&
   autocommit=1&   [3.3.0]
   standard_conforming_strings=0&   [3.4.3]
   datestyle=ISO,SQL,Postgres,European,US,German [
по умолчанию ISO]

Необязательные параметры:
port - номер порта.

Можно задать:
user:password@host:port/database,

а можно:
user:password@local/database

В этом случае произойдет соединение с сервером, расположенным на локальной машине.

charset - сразу после соединения с сервером выполняет команду SET CLIENT_ENCODING=значение;
ClientCharset - задает кодировку, в которой необходимо общаться с SQL-сервером, перекодированием занимается драйвер;

autocommit - по умолчанию Parser 3 автоматически выполняет COMMIT после каждого успешно выполненного запроса; если указать опцию autocommit=0, то такое поведение будет изменено и все запросы, написанные внутри одного оператора connect, будут выполняться в рамках одной транзакции;

datestyle - если задан этот параметр, то сразу после соединения с сервером драйвер выполнит команду SET DATESTYLE=значение;

standard_conforming_strings
 - если установлен в 1, то отключается эскейпинг символа '\' для соответствия SQL-стандартам.


Пример: перекодирование средствами SQL-сервера (рекомендуется)
Допустим, данные в базе хранятся в кодировке
UTF-8, а сайт работает в кодировке windows-1251, в этом случае нужно использовать следующую строку подключения:
pgsql://user:password@host/database?charset=win

Тогда сразу после соединения SQL-серверу будет выдана команда SET CLIENT ENCODING=win и сервер сам будет перекодировать принимаемые данные из кодировки win в кодировку, в которой данные хранятся у него в таблице, и обратно.

Внимание: в этом случае следует указать кодировку, в которой работает сайт. Эта опция выполняет команду Postgres, поэтому необходимо использовать названия кодировок Postgres-сервера, которые отличаются от названий кодировок Parser 3, определяемых в конфигурационном файле.


Пример: перекодирование драйвером (работает со всеми версиями Postgres-сервера)
В редких случаях бывает, что невозможно использовать функции перекодирования, предоставляемые Postgres-сервером. Тогда можно задействовать механизмы перекодирования драйвера, используя опцию
ClientCharset.
Допустим, данные в базе хранятся в кодировке
windows-1251, а сайт работает в кодировке koi8-r, в этом случае можно использовать такую строку подключения:
pgsql://user:password@host/database?ClientCharset=windows-1251

Тогда данные, отправляемые SQL-серверу, будут перекодироваться драйвером из кодировки $request:charset (в данном примере koi8-r) в кодировку windows-1251, а принимаемые от SQL-сервера данные - обратно.

Внимание: в этом случае нужно указать кодировку, в которой данные хранятся в БД. В этой опции нужно указать названия кодировок Parser 3, которые определяются в конфигурационном файле.



Copyright © 1997–2024 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 11.09.2024