max_allowed_packet
実行時にクライアントを直接決定することはできません。を実行するshow variables like "max_allowed_packet"
と、サーバー側でのみmax_allowed_packetが表示され、開始時に読み取ったものもすべて表示されます。そして、この値を見つける他の方法はないようです。
さらに、問題を解決するために、デフォルトでは、MySQLDocsから
On the client side, max_allowed_packet has a default of 1GB.
さらに、あなたが使用していることを指定したようにMySQL C API
。次のようにmysql_options() APIを使用して、max_allowed_packetの値を設定できます。
まず、コンテンツを含むオプションファイルを作成します
[client]
max_allowed_packet=10M
このファイルが「c:/mysql.cnf」として保存され、クライアントのmax_allowed_packetの値が10MBに設定されているとします。ここで必要なのは、connectステートメントの前にこのファイルを読み取るための次のコード行を含めることです。
mysql_options (conn, MYSQL_READ_DEFAULT_FILE, "C:/mysql.cnf");
ファイル内のグループの名前をからに変更する場合はclient
、myClient
「c:/mysql.cnf」を次のようにします。
[myClient]
max_allowed_packet=10M
接続ステートメントの前に次のコード行を使用します。
mysql_options (conn, MYSQL_READ_DEFAULT_FILE, "c:/mysql.cnf");
mysql_options (conn, MYSQL_READ_DEFAULT_GROUP, "myClient");
したがって、最終的にコードは次のようになります。
MYSQL mysql;
mysql_init(&mysql);
mysql_options (conn, MYSQL_READ_DEFAULT_FILE, "c:/mysql.cnf");
mysql_options (conn, MYSQL_READ_DEFAULT_GROUP, "myClient");
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));
}
上記のコード行では、max_allowed_packetを10Mに設定します。これで、クエリ ""を使用してサーバー側のmax_allowed_packetを読み取ることができshow variables like "max_allowed_packet"
、クライアント側のmax_allowed_packetが10MBであることがわかります。
詳細については1
MySQLコマンドラインクライアントの場合、MySQLドキュメントには
mysqlクライアントプログラムを使用している場合、そのデフォルトのmax_allowed_packet変数は16MBです。
それがあなたの目的に役立つことを願っています...