MySQL сервер ушел Ошибка при выборе строк из таблицы

0

Использование C-программы с API Mysql C, подключенной к базе данных, и инициация прошла успешно, но пыталась выполнить операции SELECT, INSERT, она выдает сообщение об ошибке "сервер MySQL ушел" на моем сервере VPS но то же самое прекрасно работает локально.

Версия сервера Mysql сервера VPS: 5.0.81-сообщество Сообщество MySQL Издание (GPL). wait_timeout: 28800

Локальная версия сервера Mysql: 5.0.77 Распределение источников.

Но доступ к одной и той же базе данных с помощью Php работает нормально без каких-либо проблем (локально и vps-сервер) происходит только при вызове с использованием API Mysql C.

int fetch_information_from_tbl()
{
        MYSQL_RES *result;
        MYSQL_ROW row;
        char query_def1[100];
        unsigned int num_fields;
        int tblid;

       /***EDITED FOR MORE INFORMATION START ***/
       // Tried to ping and set reconnection still the same error
       /* try a ping */
       if (mysql_ping(mysql)) {
           fprintf(stderr, "Cannot ping database: Error: %s\n",mysql_error(mysql));
            }
        my_bool reconnect = 0;
       if(mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect)){
           fprintf(stderr, "Mysql Option Error: %s\n",mysql_error(mysql));
        }
       /***EDITED FOR MORE INFORMATION  ENDS***/

        sprintf(query_def1, "SELECT tblid FROM test_table");
        if (mysql_query(mysql, query_def1)) {
        fprintf(stderr, "%s\n", mysql_error(mysql));
        exit(1);
        }

        result = mysql_store_result(mysql);
        num_fields = mysql_num_fields(result);
        row = mysql_fetch_row(result);
        if (row) 
        {
                tblid = atoi(row[0]);
                printf("Fetched Table ID is: %d\n",tblid)
        }

}

Правильно ли это выполнить такой запрос mysql или предложить лучший способ сделать это? И что будет с этой ошибкой, возникающей при выполнении SELECT OPERATION? Заранее спасибо.

Теги:
database

1 ответ

1

Вам нужно использовать mysql_ping, чтобы проверить, включено ли ваше соединение. Проверьте свойство mysql idle time out вашего сервера mysql. Если в течение определенного периода времени между клиентом и сервером нет активности, сервер закрывает соединение. Вы можете либо изменить это, либо использовать mysql_ping для восстановления вашего соединения.

В случае php, я думаю, он подключается к серверу для каждого запроса и отключает его.

  • 0
    Спасибо, Ниранджан. Я попытался с mysql_ping (mysql) он выдает ту же ошибку: сервер MySQL ушел. Так что же будет? А как проверить значение времени простоя mysql?
  • 0
    пожалуйста, Google для информации. при подключении используйте mysql_option, чтобы включить auto_reconnect. Пожалуйста, проверьте это dev.mysql.com/doc/refman/5.0/en/mysql-ping.html
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню