2008-11-12 2 views
2

У меня есть клиентское приложение, которое подключается к серверу базы данных MySQL 4, используя библиотеки акций на SuSE SLES 9. Однако иногда при обработке определенного сброса, установленного с сервера, итерация сбрасывания результатов не позволяет я обрабатываю все результаты, которые находятся в базе данных.C поведение клиентской библиотеки MySQL

Эта проблема возникает иногда, главным образом, когда серверы имеют несколько дней безотказной работы. Я подозреваю, что перезагрузка решает проблему.

Есть ли в любом случае, что отказ от набора результатов MySQL с течением времени вызывает эту утечку памяти и проявляет себя в этом странном поведении, должны ли все результирующие множества всегда быть освобождены? Однако та же таблица и одна и та же программа ведут себя так же, как и на другом компьютере.

Возможно, повреждение набора результатов произошло из-за проблем с реализацией в приложении или в клиентской библиотеке mysql?

ответ

0

Вы можете подумать о переходе на MySQL 5.
Обычно бывает полезно иметь последнюю версию.

+0

Обновление до MySQL не является вариантом, так как я бы любил делать это лично. – jcodeninja 2008-11-13 14:40:34

1

Все возможно, однако по умолчанию я бы склонен идти с проблемами уровня приложения. Любая проблема, которая пахнет, может быть связана с памятью, является основным кандидатом на ошибку кучи коррупции, если вы кодируете в C/C++, и это может вызвать проблемы с набором результатов. Кроме того, мне интересно, как долго вы держите этот набор результатов открытым - возможно ли, что строки, которые вы «пропустили», могли быть вставлены между временем выполнения запроса и когда вы извлекаете значение из набора результатов?

И наконец, выпуск набора результатов на сервере происходит автоматически при закрытии соединения с базой данных, поэтому, если вы не открываете одно соединение в течение нескольких дней, это вряд ли будет проблемой, если в MySQL нет ошибки.