1

C アプリケーションで MySQL と nanomsg を併用しています。nanomsg はリモート サーバーへの tcp 接続をいくつか作成していますが、MySQL は localhost データベースに接続しています。

私は SQLite から移植していますが、MySQL の経験はあまりありません。

MySQL は正常に動作しているようで、init でデータベースを作成しています。いくつかのレコードを挿入します。ただし、nanomsg で tcp 接続を開始すると、次のようになります。

Lost connection to MySQL server during query
MySQL server has gone away

リモート tcp 接続をポーリングするスレッドを作成しない場合でも、これは実行されます。これが、MySQL が接続を失う原因です。

    const char *endpoint            = "tcp://xx.xxx.xxx.xx:3000";
    int timeout = 5;
    int sock = nn_socket (AF_SP, NN_PAIR);
    assert (sock >= 0);
    assert (nn_connect (sock, endpoint) >= 0);
    assert (nn_setsockopt (sock, NN_SOL_SOCKET, NN_RCVTIMEO, &to, sizeof (to)) >= 0);
    assert (nn_setsockopt (sock, NN_SOL_SOCKET, NN_SNDTIMEO, &to, sizeof (to)) >= 0);

MySQL で読み取りタイムアウトを上げようとしましたが、うまくいきませんでした。

int MYSQlTimeout = 6000;
mysql_options(mysqldb,MYSQL_OPT_READ_TIMEOUT,&MYSQlTimeout);

また、mysqld を /etc/hosts.allow mysqld: 127.0.0.1 に追加してみました

それでもうまくいきません。

どんな助けでも大歓迎です。

4

0 に答える 0