2016-06-30 1 views
4

現在、LANネットワーク上の別のマシンに格納されているMySQLデータベースに接続するために必要なC++プロジェクトを開発中です。MySQLのエラー2006:MySQLサーバがなくなった(通信パケットを読み取る際にエラーが発生しました)

データベースに接続すると問題はありませんが、ループ内の同じポイントで(3回目の繰り返しで)データベース接続が終了し、エラーが表示されます。

:このサイトを検索するだけでなく、Googleは、多くの記事が複数のバッファと、タイムアウト変数を増やすことを提案した後

Aborted connection to db <user details> (Got an error reading communication packets) 

:私は見サーバーのログをチェックし

MySQL server has gone away. 

この問題に

while(this->pRes->next()) // pRes is a pointer to a sql::ResultSet instance 
{ 

    ... 

が行われている他のいくつかを、しかし、彼らのために働いている解決策(複数可)私のために成功していない:

innodb_log_buffer_size = 32M 
innodb_log_file_size  = 2047M 
innodb_fast_shutdown  = 0 

max_connections   = 400 
connect_timeout   = 300 
net_read_timeout   = 6000 
net_write_timeout   = 6000 
wait_timeout    = 9999999999 
interactive_timeout  = 9999999999 

max_allowed_packet  = 500M 
net_buffer_length   = 500M 

は、私はそうのような結果を反復処理しています。質問へのリンクはここにある:

ERROR 2006 (HY000): MySQL server has gone away

MySQL error 2006: mysql server has gone away

https://dba.stackexchange.com/questions/40899/mysql-error-reading-communication-packets

https://www.percona.com/blog/2016/05/16/mysql-got-an-error-reading-communication-packet-errors/

http://dev.mysql.com/doc/refman/5.7/en/communication-errors.html

注:

  • 接続を閉じて、再度開こうとしても問題は解決しません。 sql :: Connection :: reconnectを呼び出すこともできません。

  • 異なる投稿が異なる値を示唆するように、私は変数の値をいくつか試しましたが、試してみるために何か変更するたびに、私はサーバを再起動しました。

  • サーバーのバージョンが5.7である、とMySQLコネクタ/ C++のバージョンは1.1.7

  • ありの人が同じ問題を掲載している記事へのより多くのリンクがありますが、一般的に、彼らはただで同じことを示唆しているあります私が列挙した変数とは異なる値(すべて試してみましたが、何もしませんでした)。

  • サーバーをホストするマシンはWindows 10 Pro x64で、私が開発しているマシンはWindows 10 x64です。

  • 私の開発環境は、ファイアウォールは、両方のマシンで無効になっていると、ルータ上の関連するTCPポートが場合、サーバー

を実行しているマシンに転送されてきた

  • コミュニティ

    のVisual Studio 2015でありますあなたはより多くの情報を必要とし、コメントしてください。私はできることを提供します。

  • 答えて

    0

    この問題に対する回答は、質問内には表示されません。

    私はデータベースから読み込んでいましたが、オブジェクトのインスタンスを作成していて、このオブジェクトがリスト内で保持されているかどうかを確認する際に、データベースの結果をオブジェクトコンストラクタに渡していましたインスタンスをリストに追加するのではなく、重複している場合は '削除'します。

    オブジェクトの内部では、ソケットプログラミングを行っていました。物事をきちんと整えておくために、デストラクタに 'WSACleanup'が呼び出されました。あなたが知っているように、 'delete'を呼び出すと推測されます。 「WSACleanup」が呼び出され、データベースへの接続が閉じられ、問題が発生しました。

    1. 移動呼び出しがたびに複製をデータベースへの接続全体を再構築、アプリケーションのライフサイクル

    2. の最後にWSACleanupする:問題を解決するために2つの答えがあります

    私は解決策を選んだ

    を発見された1

    関連する問題