【发布时间】:2013-07-31 13:14:49
【问题描述】:
我遇到了以下异常
Mysql Caught Exception = Can't create UNIX socket (24).
我知道 UNIX 系统错误 24。那是“打开的文件太多”。
我提到了这个问题,:OperationalError: (2001, "Can't create UNIX socket (24)")
但我需要了解确切的问题。 在我的代码中,我执行多个选择查询并存储结果,而不是在两者之间使用 free_result 方法。
会不会是这个错误:Can't create UNIX socket (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);
【问题讨论】:
-
我也遇到了这个问题,首先,我按照 akostadinov 的回答来增加可用的 FD 并减少 mysql 的 open_table_cache 和 max_connections。但它似乎仍然会在很长一段时间内发生。我认为我的代码可能还有其他问题,我printf FDs,发现返回的FDs在增加。所以我认为可能其他地方没有关闭FD。所以我建议你看看有没有其他人没有关闭FD。
标签: mysql