Dear all,

I have a problem with the mysql interface for c, which after a couple of
 hours thinking about bad or faulty programming are eliminated with
 probability almost 100%.

within a loop, I do a mysql_query(), which is executed and I poll the result
and everything is fine. Up to when max_connections of the mysqld is reached:
each of the queries leaves after executing a sleeping mysql process behind on
the server, which hence throws the "Too many connections" error (or under
certain conditions even a "Can't create TCP/IP socket (24)").

Just because of this problem I recently upgraded mysql (including the
libraries) from 4.0.21 to 4.1.12, but the problem still persists.

Does anybody have an idea of how to solve this problem?
Any suggestions are appreciated.

Best,
Ronny


p.s.: code
#define GET_W_NR \
"select wort_nr from wortliste where wort_bin='%s' limit 1"
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query;

init...
  {
  mysql_init(&mysql);
  if ( !mysql_real_connect( &mysql, "127.0.0.1", "username", "passwd",
"dbase",
         0, "/var/lib/mysql/mysql.sock", 0 ) )
    {
    fprintf(stderr, "Failed: %s\n",    mysql_error(&mysql));
    }
  if (!(query = (char*) malloc(256*sizeof(char)))) fprintf(stderr, "no
pointer");
  }

this code of a function is called in a loop and returns with a mysql_error 
after `max_connections` cycles:
{
    sprintf(query, GET_W_NR, refWort);
    if ( mysql_query( &mysql, query ) )
        {
        fprintf(stderr, "query failed: %s\n", mysql_error(&mysql));
        return 0;
        }
    if ( !( res = mysql_store_result( &mysql ) ) )
        {fprintf(stderr, "store failed: %s\n", mysql_error(&mysql)); return
0;}
    if ( row = mysql_fetch_row( res ) )
        ref_word_nr = atoi(row[0]);
    else
        {fprintf(stderr, "fetch failed: %s\n", mysql_error(&mysql)); return
0;}
    mysql_free_result(res);
}

exit...
  free(query);
  mysql_close(&mysql);

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to