:: Visual Foxpro, Foxpro for DOS
Потеря соединения с MySQL
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Всем здравствуйте!
При попытке выполнения запроса к MySQL серверу с некоторой периодичностью (1 раз в из 5-10 соединений) происходит разрыв соединения

Код:
LOCAL lcSql, lnSqlResult
TEXT TO lcSql NOSHOW TEXTMERGE
SELECT user_group_id, name FROM oc_user_group WHERE 1
ENDTEXT
lnSqlResult=SQLEXEC(mySQLCH,lcSQL,"usergroup")
IF lnSqlResult=-1
=ShowError('Ошибка связи с сервером - Группы пользователей')
return .f.
ELSE
DO FORM users
ENDIF

Код функции ShowError()

LPARAMETERS lcErrText
LOCAL laE(5)
=AERROR(laE)
messagebox(lcErrText ;
+CHR(13)+'AERROR(1) : '+ALLTRIM(STR(lae(1))) ;
+CHR(13) ;
+CHR(13)+'AERROR(2) : '+lae(2) ;
+CHR(13) ;
+IIF(!ISNULL(lae(5)),CHR(13)+'AERROR(5) : '+ALLTRIM(STR(lae(5))),'') ;
+CHR(13) ;
+IIF(!ISNULL(lae(3)),CHR(13)+'AERROR(3) : '+lae(3),'') ;

Во вложении результат выполнения функции

VFP 9.0 SP2
DRIVER=MySQL ODBC 5.3 ANSI Driver

Вопросы как у Чернышевского:
1. Кто виноват?
2. Что делать?
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
sql-error.microbecal.com
И смотреть что реально на сервере происходит.
По самому запросу:
- Не очевидно форматирование в коде - если там реально стоит отступ, то стоит его убрать - вообще лучше из передаваемой на сервер команды вырезать все лишние символы - ведущие/хвостовые пробелы/табуляторы и переводы строки. Порой такая мелочь может сводить с ума сервер и/или клиентские компоненты.
- Зачем там пустой WHERE 1? Опять же, если возникают проблемы, то лучше всё "ненужное" сразу убирать.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
Vedmak

Сообщений: 5973
Откуда: CiTY
Дата регистрации: 30.10.2003
В контексте вопроса полезно уточнить "некую переодичность". Я вынуждем был прикрутить в свои решения синтетическиц "ping" к БД MySQL с интервалом в 30 секунд (запрашиваю время сервера).

Пользователи "уходили пить кофе" и сервак гасил спящий коннект без объявления войны, т.е. клиент об этом не знал. Вернувшийся пользователь генерир запрос к БД и он завершался ошибкой.

Пинг помогает держать коннект в тонусе, но требует хорошей проработки ошибок.
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
Поиск по Sqlidldisconnect


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Это плохой вариант - наши "умельцы" тоже "держат" коннект к ораклу пустыми запросами. Ибо не желают переписать по нормальному восстановление соединения - а потом на сервере куча коннектов висит впустую, при том сутками (выключать комп? закрывать задачу? не барское это дело ).
Впрочем, это ещё мелочи по сравнению с дотнетчиками, кои на какой-то хрен для десктопных прилад выставили пул коннекций с минимальным числом в 10. Вот спрашивается, назачем вам 10 коннекций для задачи где от силы пяток запросов в час происходит? Увы, кризис... в мозгах...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
Vedmak

Сообщений: 5973
Откуда: CiTY
Дата регистрации: 30.10.2003
Есть вопрос и есть решение. Советую обладателям своего решения дождатся своего вопроса. Там и поискрите умениями и знаниями.

Теоретические рассуждения хороши для обучения новичков. Есть разница между военной медициной и академической. Когда у пациента льет кровь из горла, то размышлять о цвете тампонов неуместно. Т.е. любое решение которое достигает поставленной задачи правильное в моменте. Потом, когда все уляжется, "академики" все разложат по полочкам и раскажут в чем был не прав тот который был и принял решение. А пациент продолжит жить.

Как-то так.



Исправлено 2 раз(а). Последнее : Vedmak, 19.02.17 22:27
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
sphinx

Сообщений: 31188
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Я с Саней соглашусь. Особенно, если цейтнот. Переделать код на "академически" правильный всяко легче, чем жить без решения.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Потеря соединения с MySQL
Sandwich
Автор

Сообщений: 137
Дата регистрации: 08.02.2014
Если кому интересно, то я решил вопрос с помощью Военной медицины:
При формировании строки подключения - OPTION=4194304 (FLAG_AUTO_RECONNECT)
Ratings: 0 negative/1 positive
Re: Потеря соединения с MySQL
Angel_Starlight

Сообщений: 756
Откуда: Кременчуг
Дата регистрации: 13.07.2016
А ещё можно попробовать через класс )


------------------
You can't stay in the shadows, because you yourself are radiating light!
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 (Гостей: 28)

© 2000-2024 Fox Club 
Яндекс.Метрика