Проблемы с mysql, Проблемы с mysql |
Здравствуйте, гость ( Вход | Регистрация )
Проблемы с mysql, Проблемы с mysql |
Гость_Tigr_* |
8.8.2011, 8:29
Сообщение
#1
|
Гости |
Имеется сервер, который слушает определенный порт. Когда приходит пакет, происходит проверка данных при которой происходит обращение к базе данных на мускле. запрос простой
проблема:сразу после соединения с базой все работает замечательно, но если обращение к базе долго отсутствовало (несколько часов), то он возвращает пустой запрос. хотя запись с таким id существует. переконнект с базой решает проблему. Но может существует решение, чтобы такой глюк просто не возникал? |
|
|
ViGOur |
8.8.2011, 10:53
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
У mysql есть внутренний timeout в течении которого если не происходит обращение к бд, то соединение рвется. Просто нужно в my.cfg добавить или поправить параметр (кажется connect-timeout).
|
|
|
Litkevich Yuriy |
8.8.2011, 16:20
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Гость_Tigr_* |
11.8.2011, 8:59
Сообщение
#4
|
Гости |
о если обращение к базе долго отсутствовало (несколько часов), то он возвращает пустой запрос что при этом возвращает:bool QSqlQuery::exec () bool QSqlDatabase::isOpen () const ??? И то и другое true! сделал таймер, который раз в час делает простой запрос. Пока работает стабильно. Но это называется делать через ж.... |
|
|
Алексей1153 |
12.8.2011, 6:20
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Гость_Tigr_*
должна быть функция пинга, поищи. Когда пинг говорит, что связь потеряна, нужно сделать реконнект с последними параметрами подключения в принципе, за пинг можно посчитать и некий запрос, который гарантированно должен вернуть что-то определённое. Если не вернул - переподключиться А можно и просто вот эту функцию вызывать - она сразу и пинг, и переподключение, судя по описанию ) Цитата bool QSqlDatabase::open ()
Opens the database connection using the current connection values. Returns true on success; otherwise returns false. Error information can be retrieved using lastError(). Сообщение отредактировал Алексей1153 - 12.8.2011, 6:21 |
|
|
Текстовая версия | Сейчас: 4.12.2024, 2:20 |