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()
вызвать. См. Раздел
22.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 Главы 22, Соединителей и
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, "Истечение пароля и Режим Песочницы". Эта опция была добавлена в MySQL 5.6.10. |
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.6, CLIENT_MULTI_RESULTS
включается по умолчанию.
Если Вы включаете CLIENT_MULTI_STATEMENTS
или CLIENT_MULTI_RESULTS
,
обработайте результат для каждого звонка mysql_query()
или mysql_real_query()
при использовании цикла, который вызывает mysql_next_result()
определить, есть ли больше результатов. Для примера см.
Раздел 22.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()
управлять поведением пересоединения.