Skriniar Gregor writes:
> Dear all,
> 
> I experienced some problems with using MySQL API:
> My problem is that if I don't use database a long time it is disconnected and when I 
>try to connect again at first I use method mysql_ping(), which reopens connection and 
>that's the point. Please see next code of MySQL API:
> 
> static my_bool mysql_reconnect(MYSQL *mysql)
> {
>   MYSQL tmp_mysql;    
>//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
>local variable
>   DBUG_ENTER("mysql_reconnect");
> 
>   if (!mysql->reconnect ||
>       (mysql->server_status & SERVER_STATUS_IN_TRANS) || !mysql->host_info)
>   {
>    /* Allov reconnect next time */
>     mysql->server_status&= ~SERVER_STATUS_IN_TRANS;
>     DBUG_RETURN(1);
>   }
>   mysql_init(&tmp_mysql);
>   tmp_mysql.options=mysql->options;
>   bzero((char*) &mysql->options,sizeof(mysql->options));
>   if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd,
>                         mysql->db, mysql->port, mysql->unix_socket,
>                         mysql->client_flag))
>     DBUG_RETURN(1);
>   tmp_mysql.free_me=mysql->free_me;
>   mysql->free_me=0;
>   mysql_close(mysql);
>   *mysql=tmp_mysql;   
>//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
>the in/out param is pointed to local variable. What's a wilderness?!?
>   net_clear(&mysql->net);
>   mysql->affected_rows= ~(my_ulonglong) 0;
>   DBUG_RETURN(0);
> }
> 
> This code was downloaded from www.mysql.com (today - 4th Feb 2002).
> Is it really a bug or I just overlooked something? Thanks in advance!
> 
> Best regards
> Gregor Skriniar
> 
> SIEMENS AG
> ICM N PG U SE D6
> D-13629 Berlin
> 
> Phone: +49 30 386 49590 
> Fax: +49 30 386 49118
> Email: [EMAIL PROTECTED]


Hi!

First of all, you are not supposed to use functions line net.clear(),
as those might truly break our client - server protocol. Also, you
should not change our internal fields, like free_me, although in the
above case you did not harm, as tmp_mysql should not be freed anyway,
so your code has no effect. This holds for other fields, which should
be accessed only through our C API functions, and not meddled with
directly. 

When connection is idle for wait_timeout seconds, it will be closed,
so I do not see what is your problem. 

I also do not see why should you use mysql_ping to reconnect.

-- 
Regards,
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Sinisa Milivojevic <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, Fulltime Developer
/_/  /_/\_, /___/\___\_\___/   Larnaca, Cyprus
       <___/   www.mysql.com


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to