назад Alt ←

Для PostgreSQL

 

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

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

port — номер порта.

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

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

charset — сразу после соединения с сервером выполняет команду SET CLIENT_ENCODING=значение;

ClientCharset — задает кодировку, в которой необходимо общаться с SQL-сервером, перекодированием занимается драйвер;

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

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

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

Пример: перекодирование средствами 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, которые определяются в конфигурационном файле.