C MySQL поведение клиентской библиотеки - PullRequest
2 голосов
/ 12 ноября 2008

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

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

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

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

Ответы [ 2 ]

1 голос
/ 30 января 2009

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

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

0 голосов
/ 13 ноября 2008

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

...