Трудно отладить "Сервер Mysql ушел"
Я запускаю MsAccess с базой данных Mysql, и сегодня у меня возникают некоторые проблемы.
В зависимости от того, насколько далеко я могу попасть в программу, я могу получить список всех имен и записей. Но как только я перехожу в форму редактирования любой записи, я получаю множество результатов. Иногда мне повезло, и я вижу первую запись. Но любая запись после этого всегда будет иметь ошибку MsAccess: Объект недействителен или больше не установлен, а затем любые последующие вызовы после этого выдают ошибку ODBC Mysql сервера Mysql. >
Я просмотрел несколько веб-сайтов и даже все сайты с тем же вопросом, и я пробовал различные решения. (Имейте в виду, что эта база данных работает в течение многих лет, и это первый раз, когда я получаю это сообщение). Она также занимает от 2 м14 до 2 м59, прежде чем отображать сообщения об ошибках.
Вот что я пробовал до сих пор:
- Я попытался изменить несколько параметров подключения ODBC.
- Проверено разрешить большие результаты - FAILED
- Проверено Включить автоподключение - FAILED
- Я проверил и отремонтировал таблицы - FAILED
- В результате появилось большое количество таблиц, "таблица нуждается в обновлении, пожалуйста, восстановите таблицу".
- Я удвоил числа в конфигурации my.cnf и перезапустил службу mysql, а также программное обеспечение msaccess. FAILED
- Это были настройки my.cnf после внесения изменений.
Здесь:
set-variable = max_connections=500
safe-show-database
log-error=/var/log/mysqld.log
connect_timeout=1000
interactive_timeout=28800
wait_timeout=288000 <**This was changed**
join_buffer_size=6M
key_buffer_size=300M <**THIS WAS CHANGED **
max_allowed_packet=300M <**THIS WAS CHANGED **
myisam_sort_buffer_size=300M <**THIS WAS CHANGED **
read_buffer_size=6M
sort_buffer_size=6M
table_cache=12288
thread_cache_size=24
tmp_table_size=132M
query_cache_limit=3M
query_cache_size=64M
query_cache_type=1
В основном я пробовал каждое предложение, которое мог найти до сих пор, и я не могу понять, что проблема.
Я также посмотрел MYSQL: Ушел
Если я просмотрю маркированный список,
- Никто не убил бегущую нить.
- Я не думаю, что запрос был запущен после того, как соединение было закрыто (поскольку оно работало годами отлично)
- Клиентское приложение имеет необходимые привилегии
- Я не знаю, как определить, был ли у меня тайм-аут из TCP/IP-соединения на стороне клиента
- Я не знаю, связался ли я с тайм-аутом на стороне сервера, но я знаю, что автоматическое повторное соединение на клиенте отключено
- ???
- Запрос потенциально может быть большим, поскольку он представляет собой форму со многими подформами
- ???
- DNS должен быть в порядке, так как я могу подключиться к нему с помощью реального просмотра sql (HeidiSQL)
- ??? Детские вилки
- ???
Я думаю, что это одна из тех ошибок, которые трудно понять, так как я исчерпал себя:/Вероятно, мне не хватает информации, но я не уверен, что еще включить.
--- EDIT ---
Спасибо всем за ваши комментарии, я все еще отлаживаю эту проблему. Похоже, что это не все формы, которые вызывают некоторые проблемы. Поэтому я начинаю думать, что это проблема с MSAccess больше, чем проблема с MySql. Формы, которые разбивают все, имеют одну и ту же строку в коде VBA:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If Screen.ActiveControl.Name = "UnboundTextBox" Then
Response = acDataErrContinue
End If
End Sub
Я не помню, чтобы вводить этот код, поэтому я предполагаю, что это автоматическая вещь, но я все еще просматриваю все свои формы, чтобы увидеть, какие из них вызывают эту ошибку, а какие нет. Так что еще немного.
--- Сегодня я делаю отладку, пытаясь найти все, что могу, из любого журнала, который я могу собрать ----
MSACCESS 17ec-b10 EXIT SQLStatisticsW with return code -1 (SQL_ERROR)
HSTMT 0AF82920
WCHAR * 0x00000000 [ -3] <empty string>
SWORD -3
WCHAR * 0x00000000 [ -3] <empty string>
SWORD -3
WCHAR * 0x0013AAE8 [ -3] "location\ 0"
SWORD -3
UWORD 1 <SQL_INDEX_ALL>
UWORD 0 <SQL_QUICK>
DIAG [08S01] [MySQL][ODBC 3.51 Driver][mysqld-5.0.92-community]Lost
connection to MySQL server during query (2013)
----------------------------- ЗАКЛЮЧИТЕЛЬНОЕ ИЗОБРАЖЕНИЕ ---------------- ----------
На прошлой неделе или около того, мой босс работает трудно установить новый внутренний сервер для нашего офиса. Мы также неоднократно переключали IP-адреса и провайдеров ISP. Оказывается, в результате он создал для меня административный кошмар, когда я попытался отладить проблемы с сервером и проблемы с программным обеспечением и т.д., Когда проблема была в настройках поставщиков услуг Интернета, установленных с настройками маршрутизатора и т.д. и т.д.... В принципе, вся эта головная боль была неправа с сервером, а также программным обеспечением, кроме аппаратного.
Итак, теперь мне приходится обращать внимание на все, что я делал, и пытаться заставить его работать на обоих ips. Сейчас он работает над важным. Но он не работает над старым, поэтому... Наверное, мне просто нужно это понять. [Размахивая воображаемым кулаком в воздухе] Lol
Ответы
Ответ 1
Проблема в том, что соединение отключено. Это не параметр, который вы можете изменить на уровне ODBC. Мой провайдер MySQL установил тайм-аут через 30 секунд (вы можете узнать, что у вас установлено при выполнении запроса PassThrough "SELECT @@wait_timeout" ). Я обошел его, опросив соединение каждые 10 секунд простой формой. Это поддерживает связь. Убедитесь, что у вас есть макрос AutoExec, который открывает форму.
Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 1000 ' 10 seconds
End Sub
Private Sub Form_Timer()
Me.Requery
End Sub
Ответ 2
Я не использовал MySQL с Access в производственной среде, но проблема, с которой вы сталкиваетесь, выглядит подозрительно похожей на ту, с которой я столкнулся с SQL Server. В принципе, если рабочая станция клиента имеет неправильные настройки DNS, она может запутаться в том, как разрешить подключение к SQL Server и потерять соединение. В тех случаях, когда я столкнулся с этим, рабочие станции были неправильно настроены DNS-провайдером Интернета в качестве основного DSN, но SQL Server был локальным сервером, доступным только в локальной локальной сети (и не отображаемым DNS-провайдером).
Решение состоит в том, чтобы использовать локальный контроллер домена в качестве первичного DNS. Он будет искать локальный IP-адрес SQL Server и передавать любые нелокальные запросы DNS-провайдеру Интернета.
Если у вас нет контроллера домена Windows/Samba, вам необходимо использовать любой сервер локального имени локальной сети. Кроме того, вы можете подключиться к серверу MySQL по IP-адресу и избежать проблемы или сопоставить его в файле HOSTS рабочей станции клиента (что не рекомендуется - это отличный способ для устранения неполадок при изменении IP-адресов).
Ответ 3
[mysqld-5.0.92-community]Lost
connection to MySQL server during query (2013)
Этот genary означает, что вы обнаружили ошибку в MySQL-Server
можете ли вы отправить хвост mysqld.err и mysqd.log
это заставляет сервер перезагружаться и будет эффективно отключать все открытые соединения