我正在使用Mysql后台数据库运行MsAccess,今天我遇到了一些问题。
根据我可以进入程序的程度,我可以获得所有名称和条目的列表。但是一旦我进入任何条目的编辑形式,我会得到各种各样的结果。有时我很幸运,我可以看到第一个条目。但是之后的任何条目总是会出现MsAccess错误:对象无效或不再设置然后任何后续调用将产生一个Mysql ODBC错误 Mysql服务器已经消失。
我查看了几个网站,甚至所有堆栈溢出网站都有相同的问题,我尝试了各种解决方案。 (请记住,此数据库已运行多年,这是我第一次收到此消息)在显示任何错误消息之前,它还需要大约2m14s到2m59s。
这是我到目前为止所尝试的内容:
下面:
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: Has gone away 如果我通过项目符号列表
我认为这是其中一个难以理解的错误,因为我已经筋疲力尽了:/我可能错过了一些信息,但我不确定还包括哪些内容。
--- --- 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提供商。事实证明,他为我创造了一个行政噩梦,因为我试图调试服务器的问题,以及软件问题等...当问题出现在ISP提供商使用路由器设置建立的设置中时等等......所以基本上这个问题基本上是服务器,软件和硬件之间没有问题。
所以现在,我必须向后设计我所做的一切,并尝试让它在两个ips上工作。它现在适用于重要的一个。但它不适用于旧的...所以我想我只需要解决这个问题。 [在空中挥舞着想象中的拳头] Lol
答案 0 :(得分:2)
问题是连接超时。这不是您可以在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
答案 1 :(得分:1)
我没有在生产环境中使用MySQL和Access,但是你遇到的问题听起来与我在SQL Server上遇到的问题非常相似。基本上,如果客户端工作站具有不正确的DNS设置,则可能会对如何解析与SQL Server的连接以及丢失连接感到困惑。在我遇到这种情况的情况下,工作站未正确配置Internet提供商的DNS作为主DSN,但SQL Server是本地服务器,仅在本地LAN上可用(并且不由ISP DNS映射)。
解决方案是使用本地域控制器作为主DNS。它将查找本地SQL Server的IP并将任何非本地查找传递给Internet提供商的DNS。
如果您没有Windows / Samba域控制器,则需要使用本地LAN的授权名称服务器。或者,您可以通过IP地址连接到MySQL服务器并避免出现问题,或将其映射到客户端工作站的HOSTS文件中(不建议这样做 - 这是导致IP地址更改时难以解决问题的好方法)
答案 2 :(得分:0)
[mysqld-5.0.92-community]Lost
connection to MySQL server during query (2013)
这个genary意味着您在MySQL-Server中发现了一个错误 你可以张贴你的mysqld.err和mysqd.log的尾巴
这会使服务器重新启动,并且会有效关闭所有打开的连接