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()
は、host
で動作している MySQL
データベースエンジンへの接続を確立しようとします。mysql_real_connect()
が正常終了しなければ、他の API
関数(mysql_get_client_info()
を除く)を実行できません。
パラメータの指定方法を次に示します。
1 つ目のパラメータには、既存の
MYSQL
構造体のアドレスを指定する。mysql_real_connect()
を呼び出す前に、mysql_init()
を呼び出して MYSQL
構造体を初期化する必要がある。mysql_options()
を使用すると、さまざまな接続オプションを変更できる。
See 項11.1.3.40. 「mysql_options()
」。
host
パラメータには、ホスト名または IP
アドレスのどちらかを指定する。host
に NULL
または文字列
"localhost"
を指定した場合、ローカルホストに接続するものとみなされる。OS
がソケット(Unix)または名前付きパイプ(Windows)をサポートしている場合、TCP/IP
の代わりにそれらを使用してサーバに接続する。
user
パラメータにはユーザの
MySQL ログイン ID
を指定する。user
に
NULL
または空文字列
""
を指定した場合、現在のユーザを使用するものとみなされる。Unix
では現在のログイン名が使用される。Windows
で ODBC
を使用する場合は、現在のユーザ名を明示的に指定する必要がある。
See 項11.2.2. 「ODBC アドミニストレータのフィールドの設定方法」。
passwd
パラメータには
user
のパスワードを指定する。passwd
に NULL
を指定した場合、user
テーブルのエントリのパスワードフィールドに何も指定されていない(空である)ユーザだけがチェック対象となる。データベース管理者は、この機能を使用して、パスワードを指定しているかどうかによってユーザに異なる特権を与えるという
MySQL 特権システムをセットアップできる。
注意:パスワードの暗号化はクライアント
API
によって自動的に処理されるので、mysql_real_connect()
を呼び出す前にパスワードの暗号化は不要である。
db
パラメータにはデータベース名を指定する。db
が NULL
ではない場合、この値が接続のデフォルトデータベースとして設定される。
port
パラメータに 0
以外の値を指定した場合、この値が TCP/IP
接続のポート番号として使用される。注意:
接続のタイプは host
パラメータによって決定される。
unix_socket
パラメータに
NULL
以外の値を指定した場合、この文字列がソケットまたは名前付きパイプに使用される。注意:
接続のタイプは host
パラメータによって決定される。
client_flag
パラメータには通常
0
を指定するが、極めて特殊な状況では以下に示すフラグを組み合わせて指定できる。
フラグ名 | フラグの説明 |
CLIENT_COMPRESS |
圧縮プロトコルを使用。 |
CLIENT_FOUND_ROWS |
影響を受けたレコードの数ではなく、検索結果の(一致した)レコードの数を返す。 |
CLIENT_IGNORE_SPACE |
関数名の末尾の空白を無視する。すべての関数名を予約語とする。 |
CLIENT_INTERACTIVE |
アイドル状態が(wait_timeout
秒ではなく)interactive_timeout
秒継続したら接続をクローズする。 |
CLIENT_LOCAL_FILES |
LOAD DATA LOCAL の処理を有効にする。 |
CLIENT_MULTI_STATEMENTS |
クライアントが複数行クエリ(‘; ’
をステートメントの区切りとする)を送信する可能性があることをサーバに通知する。このフラグが設定されていない場合、複数行クエリは無効。MySQL
4.1 の新機能。 |
CLIENT_MULTI_RESULTS |
クライアントが複数クエリまたはストアドプロシージャによって取得した複数の結果セットを処理できることをサーバに通知する。CLIENT_MULTI_STATEMENTS
が設定されている場合、このフラグは自動的に設定される。MySQL
4.1 の新機能。 |
CLIENT_NO_SCHEMA |
db_name.tbl_name.col_name
という構文の使用を禁止する。これは
ODCB
向けの構文である。この構文を使用した場合、パーサでエラーが発生する。この構文は一部の
ODBC
プログラムでバグをトラップするために使用する。 |
CLIENT_ODBC |
クライアントが ODBC
経由であることを通知する。この場合、mysqld
は ODBC
クライアントに適した処理を行う。 |
CLIENT_SSL |
SSL(暗号化プロトコル)を使用する。アプリケーションプログラムではこのフラグを設定しないこと。これはクライアントライブラリが内部で設定するフラグである。 |
戻り値
接続が正常に確立した場合は
MYSQL*
接続ハンドル。接続が確立しなかった場合は
NULL
。接続が確立した場合、戻り値は
1 つ目のパラメータの値と同じです。
エラー
CR_CONN_HOST_ERROR
MySQL サーバへの接続が確立しなかった。
CR_CONNECTION_ERROR
ローカルの MySQL サーバへの接続が確立しなかった。
CR_IPSOCK_ERROR
IP ソケットの作成に失敗した。
CR_OUT_OF_MEMORY
メモリが不足していた。
CR_SOCKET_CREATE_ERROR
Unix ソケットの作成に失敗した。
CR_UNKNOWN_HOST
ホスト名の IP アドレスが見つからなかった。
CR_VERSION_ERROR
サーバに接続する際に、異なるプロトコルバージョンのクライアントライブラリを使用したために、プロトコルの不一致が発生した。このエラーは、--old-protocol
オプションを指定しないで起動した新しいバージョンのサーバに、非常に古いバージョンのクライアントライブラリを使用して接続を試みた場合に発生する可能性がある。
CR_NAMEDPIPEOPEN_ERROR
Windows で名前付きパイプの作成に失敗した。
CR_NAMEDPIPEWAIT_ERROR
Windows で名前付きパイプの待機に失敗した。
CR_NAMEDPIPESETSTATE_ERROR
Windows でパイプハンドラの取得に失敗した。
CR_SERVER_LOST
connect_timeout
が正の値であり、connect_timeout
秒経過してもサーバに接続できなかった。または
init-command
の実行中にサーバがダウンした。
例
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 ライブラリが
my.cnf
ファイルの
[client]
および
[your_prog_name]
セクションを読み込むように設定しています。このように設定することで、非標準的な方法でセットアップされた
MySQL
に対してもこのプログラムが正常に動作することを保証します。
注意:
接続が確立したとき、mysql_real_connect()
によって reconnect
フラグ(MYSQL
構造体の一部)の値が 1
に設定されます。このフラグは、接続が切断されてクエリを実行できない場合に、そこでクエリを終了せずに、サーバへの再接続を試みることを意味します。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.