我遇到以下异常
Mysql Caught Exception =无法创建UNIX套接字(24)。
我知道UNIX系统错误24.那是“太多打开文件”。
我提到了这个问题:OperationalError: (2001, "Can't create UNIX socket (24)")
但我需要了解确切的问题。 在我的代码中,我执行多个select查询并存储结果,而不是使用free_result方法。
是否可能出现此错误:无法创建UNIX套接字(24)
这是我的代码:
pthread_mutex_lock(&mysqlMutex);
mysql = mysql_init(NULL);
my_bool reconnect = 1;
MYSQL* connection;
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
connection = mysql_real_connect( server,user,password, database_name, 0, NULL, 0 );
if(connection == NULL)
{
//Connection failed.Exception Handling
}
//Execute query :SELECT * from user ;
mysql_query(mysql, getuser_query);
MYSQL_RES *mysql_res = mysql_store_result(mysql);
// Query # 2
// SELECT * from usergroup.
mysql_query(m_pMysql, userGroup_query);
mysql_res = mysql_store_result(mysql);
// Query # 3
// Query # 4
最后:
//free mysql memory
mysql_free_result(mysql_res);
mysql_close(mysql);
pthread_mutex_unlock(&mysqlMutex);
答案 0 :(得分:1)
您可能打开了太多与mysql服务器的同时连接。您需要将可用的FD增加到mysql进程。您通常可以在Linux发行版中使用/etc/security/limits*
执行此操作。
您还可以查看此问题:Mysql decrease opened files