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 に追加してみました
それでもうまくいきません。
どんな助けでも大歓迎です。