- 23.7.1 MySQL C API の実装
- 23.7.2 MySQL サーバーと MySQL Connector/C の同時インストール
- 23.7.3 C API クライアントプログラムの例
- 23.7.4 C API クライアントプログラムの構築と実行
- 23.7.5 C API データ構造
- 23.7.6 C API 関数の概要
- 23.7.7 C API 関数の説明
- 23.7.8 C API プリペアドステートメント
- 23.7.9 C API プリペアドステートメントデータ構造
- 23.7.10 C API プリペアドステートメント関数の概要
- 23.7.11 C API プリペアドステートメント関数の説明
- 23.7.12 C API スレッド関数の説明
- 23.7.13 C API 組み込みサーバー関数の説明
- 23.7.14 C API クライアントプラグイン関数
- 23.7.15 C API を使用する場合の一般的な質問と問題
- 23.7.16 自動再接続動作の制御
- 23.7.17 複数ステートメント実行の C API サポート
- 23.7.18 C API プリペアドステートメントの問題
- 23.7.19 C API プリペアドステートメントの日時値の処理
- 23.7.20 C API のプリペアド CALL ステートメントのサポート
C API は、MySQL クライアント/サーバープロトコルへの低レベルアクセスを提供し、C プログラムがデータベースの内容にアクセスできるようにします。C API コードは MySQL とともに配布され、libmysqlclient
ライブラリに実装されています。セクション23.7.1「MySQL C API の実装」を参照してください。
ほかのほとんどのクライアント API は libmysqlclient
ライブラリを使用して、MySQL サーバーと通信します。(例外は Connector/J および Connector/Net です。)これは、たとえば、ほかのクライアントプログラムによって使用されている多くの同じ環境変数を利用できることを意味します。それらは、ライブラリから参照されているためです。これらの環境変数のリストについては、セクション4.1「MySQL プログラムの概要」を参照してください。
C API を使用してクライアントプログラムを構築する手順については、セクション23.7.4.1「C API クライアントプログラムの構築」を参照してください。スレッドによるプログラミングについては、セクション23.7.4.2「C API スレッドクライアントプログラムの作成」を参照してください。「サーバー」と「クライアント」を同じプログラムに含む (および外部 MySQL サーバーと通信しない) スタンドアロンアプリケーションを作成するには、セクション23.6「組み込み MySQL サーバーライブラリ libmysqld」を参照してください。
アップグレード後に、コンパイル済みのクライアントプログラムに、「コマンドは同期されていません」
または予期しないコアダンプなどの問題が発生した場合は、プログラムが古いヘッダーファイルまたはライブラリファイルを使用してコンパイルされた可能性があります。この場合、コンパイルに使用された mysql.h
ファイルおよび libmysqlclient.a
ライブラリの日付をチェックして、それらが新しい MySQL 配布からのものであることを確認します。そうでない場合には、プログラムを新しいヘッダーおよびライブラリで再コンパイルします。ライブラリのメジャーバージョン番号が変更された (libmysqlclient.so.17
から libmysqlclient.so.18
など) 場合に、共有クライアントライブラリに対してコンパイルされているプログラムでも、再コンパイルが必要になる可能性があります。追加の互換性情報については、セクション23.7.4.3「C API クライアントプログラムの実行」を参照してください。
クライアントは最大の通信バッファーサイズを持ちます。最初に割り当てられるバッファーのサイズ (16K バイト) は最大サイズ (デフォルトで 16M バイト) まで自動的に増やされます。バッファーサイズは、必要に応じてのみ増やされるため、最大制限を単純に増やしても、それ自体で使用されるリソースが増えるわけではありません。このサイズチェックは、主に誤ったステートメントと通信パケットに対する予防措置です。
通信バッファーは、単一の SQL ステートメント (クライアントからサーバーへのトラフィックの) と 1 行の返されるデータ (サーバーからクライアントへのトラフィックの) を格納するために十分な大きさがある必要があります。各セッションの通信バッファーは、クエリーまたは行を処理するために、最大制限まで動的に拡大されます。たとえば、16M バイトまでのデータを格納する BLOB
値がある場合、少なくとも 16M バイトの通信バッファー制限が必要です (サーバーとクライアントの両方で)。クライアントライブラリに組み込まれたデフォルトの最大は 1G バイトですが、サーバーでのデフォルトの最大は 1M バイトです。これを増やすには、サーバー起動時に max_allowed_packet
パラメータの値を変更します。セクション8.11.2「サーバーパラメータのチューニング」を参照してください。
MySQL サーバーは各クエリー後、各通信バッファーを net_buffer_length
バイトに縮小します。クライアントでは、接続に関連付けられたバッファーのサイズは接続がクローズされるまで減らされません。その時点で、クライアントのメモリーが再利用されます。