назад Alt ←

Для MySQL (MariaDB)

 

mysql://user:password@host[:port][,host[:port]]|[/unix/socket]/database?
	charset=значение&
	ClientCharset=кодировка&
	timeout=3&
	compress=0&
	named_pipe=1&
	autocommit=1&
	local_infile=0&
	multi_statements=0&
	config_file=~/.my.cnf&
	config_group=parser

Как правило, для подключения не нужно указывать дополнительные параметры:

mysql://user:password@localhost/database

Можно вместо имени_хоста и номера_порта передать путь к UNIX-сокету в квадратных скобках (UNIX-сокет — это некий магический набор символов (путь), который известен администратору MySQL. Через этот сокет может идти общение с сервером):

mysql://user:password@[/unix/socket]/database

charset — сразу после соединения выполняет команду SET NAMES значение (значением может быть название кодировки для MySQL 4.1+);

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

timeout — задает значение параметра Connect timeout в секундах;

compress — режим сжатия трафика между сервером и клиентом;

named_pipe — использование именованных каналов для соединения с сервером MySQL, работающим под управлением Windows NT;

autocommit — если установлен в 0, то после соединения выполняет команду SET AUTOCOMMIT=0 (в документации по MySQL следует прочитать, как работает autocommit, в том числе какие команды вызывают COMMIT);

local_infile — если установлен в 1, то разрешается выполнение команды LOAD DATA [LOCAL] INFILE (подробности) [3.4.2];

multi_statements — если установлен в 1, то текст SQL-запроса может содержать несколько инструкций, разделенных символом ; (символ ; необходимо предварять символом ^) [3.3.0];

config_file — использовать указанный файл с настройками (например, там может быть указан сертификат для безопасного соединения) [3.4.6];

config_group — читать указанную группу настроек из файла с настройками [3.4.6].

Пример: перекодирование средствами SQL-сервера (рекомендуется, требуется MySQL 4.1 или выше)

MySQL-сервер версии 4.1 и выше имеет богатые возможности по перекодированию данных, поэтому в случае его использования рекомендуется задействовать именно их, используя опцию charset, а не заниматься перекодированием средствами драйвера с помощью опции ClientCharset. В случае использования версии MySQL 4.1 и выше, можно даже хранить в разных таблицах данные в разных кодировках, хотя мы считаем, что в этом случае лучше всего хранить данные в кодировке UTF-8. В MySQL есть разные варианты этой кодировки, следует использовать utf8mb4.

Допустим, данные в базе хранятся в кодировке UTF-8, а сайт работает в кодировке windows-1251, в этом случае нужно использовать следующую строку подключения:

mysql://user:password@host/database?charset=cp1251

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

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

Пример: база в windows-1251, страницы в koi8-r, перекодирование драйвером (работает со всеми версиями MySQL-сервера)

В редких случаях бывает, что невозможно использовать функции перекодирования, предоставляемые MySQL-сервером. Тогда можно задействовать механизмы перекодирования драйвера, используя опцию ClientCharset.

Допустим, данные в базе хранятся в кодировке windows-1251, а сайт работает в кодировке koi8-r, в этом случае можно использовать такую строку подключения:

mysql://user:password@host/database?ClientCharset=windows-1251

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

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

Пример: подключение к кластеру MySQL

mysql://user:password@node1,node2,node3/?timeout=1

Сперва произойдет попытка подключения к серверу node1. Если соединение не будет установлено в течение секунды (а обычно это занимает тысячные доли секунды), то произойдет переключение на сервер node2, если и с ним не получится установить соединение в течение секунды, произойдет переключение на сервер node3.

Пример: подключение к SphinxQL

mysql://@localhost:9306/?ClientCharset=utf-8