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