|
Spec-Zone .ru
спецификации, руководства, описания, API
|
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char
*passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
mysql_real_connect() попытки установить соединение с работой механизма базы
данных MySQL host. mysql_real_connect() должен завершиться успешно прежде, чем можно будет
выполнить любые другие API-функции, которые требуют допустимого MYSQL структура
дескриптора соединения.
Параметры определяются следующим образом:
Для первого параметра определите адрес существующего MYSQL структура. Перед вызовом mysql_real_connect(), вызвать mysql_init() инициализировать MYSQL
структура. Можно измениться, много из соединяет опции с mysql_options() вызвать. См. Раздел
21.8.7.49,"mysql_options()".
Значение host может быть или имя хоста или IP-адрес.
Если host NULL или строка "localhost", соединение с локальным узлом принимается. Для
Windows клиент соединяет использование сопряжения с общей памятью, если серверу включали сопряжениям с
общей памятью. Иначе, TCP/IP используется. Для Unix клиент соединяет использование файла сокета Unix.
Для локальных соединений можно также влиять на тип соединения, чтобы использовать с MYSQL_OPT_PROTOCOL или MYSQL_OPT_NAMED_PIPE
опции к mysql_options(). Тип
соединения должен поддерживаться сервером. Для a host значение "." на Windows клиент соединяет использование именованного
канала, если серверу включали соединениям именованного канала. Если соединения именованного канала не
включаются, ошибка происходит.
user параметр содержит идентификатор для входа в
систему MySQL пользователя. Если user NULL или
пустая строка "", текущий пользователь принимается. Под Unix это
- текущее имя для входа в систему. Под ODBC Windows текущее имя пользователя должно быть определено
явно. См. раздел Соединителя/ODBC Главы 21, Соединителей и
API.
passwd параметр содержит пароль для user. Если passwd NULL, только записи в user таблица для
пользователя, у которых есть пустое (пустое) поле пароля, проверяется на соответствие. Это позволяет
администратору базы данных установить систему полномочия MySQL таким способом, которым пользователи
получают различные права в зависимости от того, определили ли они пароль.
Не пытайтесь зашифровать пароль перед вызовом mysql_real_connect(); шифрование пароля обрабатывается
автоматически клиентским API.
user и passwd
использование параметров любой набор символов было сконфигурировано для MYSQL объект. По умолчанию это latin1, но
может быть изменен, вызывая mysql_options(mysql,
MYSQL_SET_CHARSET_NAME, " до соединения. charset_name")
db имя базы данных. Если db не NULL, соединение устанавливает базу данных
значения по умолчанию в это значение.
Если port не 0, значение используется в качестве
номера порта для соединения TCP/IP. Отметьте что host параметр определяет
тип соединения.
Если unix_socket не NULL,
строка определяет сокет или именованный канал, чтобы использовать. Отметьте что host
параметр определяет тип соединения.
Значение client_flag обычно 0, но может быть
установлен в комбинацию следующих флагов активировать определенные опции.
| Имя флага | Описание флага |
|---|---|
CAN_HANDLE_EXPIRED_PASSWORDS |
Клиент может обработать истекшие пароли. Для получения дополнительной информации см. Раздел 6.3.6, "Истечение пароля и Режим Песочницы". |
CLIENT_COMPRESS |
Используйте протокол сжатия. |
CLIENT_FOUND_ROWS |
Возвратите число найденных (соответствующих) строк, не число измененных строк. |
CLIENT_IGNORE_SIGPIPE |
Препятствует тому, чтобы клиентская библиотека установила a SIGPIPE
обработчик сигнала. Это может использоваться, чтобы избежать конфликтов с обработчиком,
который уже установило приложение.
|
CLIENT_IGNORE_SPACE |
Пробелы разрешения после имен функций. Делает все зарезервированные слова имен функций. |
CLIENT_INTERACTIVE |
Разрешение interactive_timeout секунды (вместо wait_timeout секунды) неактивности прежде, чем закрыть
соединение. Сеанс клиента wait_timeout переменная устанавливается в значение
сеанса interactive_timeout переменная.
|
CLIENT_LOCAL_FILES |
Включить LOAD DATA
LOCAL обработка.
|
CLIENT_MULTI_RESULTS |
Скажите серверу, что клиент может обработать многократные наборы результатов от
выполнения многократного оператора или хранимых процедур. Этот флаг автоматически
включается если CLIENT_MULTI_STATEMENTS включается. См.,
что примечание следует за этой таблицей для получения дополнительной информации об этом
флаге.
|
CLIENT_MULTI_STATEMENTS |
Скажите серверу, что клиент может отправить многократные операторы в единственной строке
(разделенный";").
Если этот флаг не устанавливается, выполнение многократного оператора отключается. См.,
что примечание следует за этой таблицей для получения дополнительной информации об этом
флаге.
|
CLIENT_NO_SCHEMA |
Не разрешайте db_name.tbl_name.col_name
синтаксис. Это для ODBC. Это заставляет синтаксический анализатор генерировать ошибку,
если Вы используете тот синтаксис, который полезен для захвата ошибок в некоторых
программах ODBC.
|
CLIENT_ODBC |
Неиспользованный. |
CLIENT_SSL |
Используйте SSL (зашифрованный протокол). Не устанавливайте эту опцию в пределах
прикладной программы; это устанавливается внутренне в клиентской библиотеке. Вместо
этого используйте mysql_ssl_set()
перед вызовом mysql_real_connect().
|
CLIENT_REMEMBER_OPTIONS |
Помните опции, определенные звонками mysql_options(). Без этой опции, если mysql_real_connect() сбои, следует повториться mysql_options()
вызовы прежде, чем попытаться соединиться снова. С этой опцией, mysql_options()вызовы не должны быть повторены.
|
Если Ваша программа использует CALL операторы, чтобы выполнить хранимые процедуры, CLIENT_MULTI_RESULTS
флаг должен быть включен. Это то, потому что каждый CALL возвращает результат указать на состояние вызова, в дополнение к любым
наборам результатов, которые могли бы быть возвращены операторами, выполняемыми в пределах процедуры. Поскольку
CALL
может возвратить многократные результаты, обработать их использующий цикл, который вызывает mysql_next_result() определить, есть ли больше результатов.
CLIENT_MULTI_RESULTS может быть включен, когда Вы вызываете mysql_real_connect(), любой явно, передавая CLIENT_MULTI_RESULTS
флаг непосредственно, или неявно передавая CLIENT_MULTI_STATEMENTS (который также
включает CLIENT_MULTI_RESULTS). В MySQL 5.7, CLIENT_MULTI_RESULTS
включается по умолчанию.
Если Вы включаете CLIENT_MULTI_STATEMENTS или CLIENT_MULTI_RESULTS,
обработайте результат для каждого звонка mysql_query() или mysql_real_query() при использовании цикла, который вызывает mysql_next_result() определить, есть ли больше результатов. Для примера см.
Раздел 21.8.17, "Поддержка API C
Многократного Выполнения Оператора".
Для некоторых параметров возможно взять значение от файла опции, а не от явного значения в mysql_real_connect() вызвать. Чтобы сделать это, вызвать mysql_options() с MYSQL_READ_DEFAULT_FILE или MYSQL_READ_DEFAULT_GROUP опция перед вызовом mysql_real_connect(). Затем, в mysql_real_connect() вызовите, определите значение "без значений" для каждого параметра, который будет считан из файла опции:
Для host, определите значение NULL
или пустая строка ("").
Для user, определите значение NULL
или пустая строка.
Для passwd, определите значение NULL.
(Для пароля, значения пустой строки в mysql_real_connect()
вызов не может быть переопределен в файле опции, потому что пустая строка указывает явно, что у учетной
записи MySQL должен быть пустой пароль.)
Для db, определите значение NULL или пустая строка.
Для port, определите значение 0.
Для unix_socket, определите значение NULL.
Если никакое значение не находится в файле опции для параметра, его значение по умолчанию используется как обозначено в описаниях, данных ранее в этом разделе.
A MYSQL* дескриптор соединения, если соединение было успешно, NULL если соединение было неудачно. Для успешного соединения возвращаемое значение
является тем же самым как значением первого параметра.
Отказавший, чтобы соединиться с сервером MySQL.
Отказавший, чтобы соединиться с локальным сервером MySQL.
Отказавший, чтобы создать сокет IP.
Из памяти.
Отказавший, чтобы создать сокет Unix.
Отказавший, чтобы найти IP-адрес для имени хоста.
Несоответствие протокола следовало из попытки соединиться с сервером с клиентской библиотекой, которая использует различную версию протокола.
Отказавший, чтобы создать именованный канал на Windows.
Отказавший, чтобы ожидать именованного канала на Windows.
Отказавший, чтобы получить обработчик канала на Windows.
Если connect_timeout
> 0 и это заняло больше времени чем connect_timeout секунды, чтобы соединиться с сервером или если
сервер умер, выполняясь init-command.
MYSQL дескриптор соединения уже соединяется.
MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)){ fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql));}
При использовании mysql_options()
библиотека MySQL читает [client] и [your_prog_name]
разделы в my.cnf файл, который гарантирует, что Ваша программа работает, даже если
кто-то установил MySQL некоторым нестандартным способом.
Отметьте это на соединение, mysql_real_connect()
наборы reconnect флаг (часть MYSQL структура) к
значению 1 в версиях API, более старого чем 5.0.3, или 0 в более новых версиях. Значение 1 поскольку этот
флаг указывает на это, если оператор не может быть выполнен из-за потерянного соединения, чтобы попытаться
повторно соединиться с сервером перед отказом. Можно использовать MYSQL_OPT_RECONNECT опция к mysql_options() управлять поведением пересоединения.