Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“难以调试”;Mysql服务器已经消失了”;_Mysql_Ms Access - Fatal编程技术网

“难以调试”;Mysql服务器已经消失了”;

“难以调试”;Mysql服务器已经消失了”;,mysql,ms-access,Mysql,Ms Access,我正在使用Mysql后台数据库运行MsAccess,今天遇到了一些问题 根据我能进入程序的程度,我能得到所有姓名和条目的列表。但是一旦我进入任何条目的编辑表单,我就会得到各种各样的结果。有时我很幸运,我能看到第一个条目。但之后的任何条目都会得到MsAccess错误:对象无效或不再设置,之后的任何后续调用都会产生Mysql ODBC错误,即Mysql服务器已消失。 我环顾了几个网站,甚至是所有有相同问题的堆栈溢出网站,并尝试了各种解决方案。(请记住,此数据库已运行多年,这是我第一次收到此消息)在显

我正在使用Mysql后台数据库运行MsAccess,今天遇到了一些问题

根据我能进入程序的程度,我能得到所有姓名和条目的列表。但是一旦我进入任何条目的编辑表单,我就会得到各种各样的结果。有时我很幸运,我能看到第一个条目。但之后的任何条目都会得到MsAccess错误:对象无效或不再设置,之后的任何后续调用都会产生Mysql ODBC错误,即Mysql服务器已消失。

我环顾了几个网站,甚至是所有有相同问题的堆栈溢出网站,并尝试了各种解决方案。(请记住,此数据库已运行多年,这是我第一次收到此消息)在显示任何错误消息之前,它还需要大约2 m14到2 m59秒的时间

以下是我迄今为止所做的尝试:

  • 我尝试过更改一些ODBC连接设置。
    • 选中允许大结果-失败
    • 选中启用自动重新连接-失败
  • 我检查并修复了表-失败
    • 大量表导致“表需要更新,请修复表”
  • 我已经将my.cnf配置中的数字增加了一倍,并重新启动了mysql服务和msaccess软件失败
    • 这些是我更改后my.cnf的设置
  • 在这里:

    我不记得把这个代码放进去了,所以我假设这是一个自动的东西,但我仍然在检查我所有的表单,看看哪些表单导致了这个错误,哪些没有。所以几分钟后会有更多

    ---今天我在做一些调试,试图从我能收集到的日志中找到我能找到的东西----

    MSACCESS 17ec-b10退出SQLStatisticsW,返回代码-1(SQL\U错误)
    HSTMT 0AF82920
    WCHAR*0x00000000[-3]
    剑-3
    WCHAR*0x00000000[-3]
    剑-3
    WCHAR*0x0013AAE8[-3]“位置\0”
    剑-3
    UWORD 1
    UWORD 0
    DIAG[08S01][MySQL][ODBC 3.51驱动程序][mysqld-5.0.92-community]丢失
    查询期间与MySQL服务器的连接(2013年)
    
    -----------------------------最终编辑--------------------------

    在过去的一周左右,我的老板一直在努力为我们的办公室安装一个新的内部服务器。我们还多次交换IP和ISP提供商。结果,他给我制造了一个管理噩梦,因为我试图调试服务器和软件等方面的问题。。发射型计算机断层扫描仪。。当问题出现在ISP提供商使用路由器设置等建立的设置中时。。。等所以,基本上,整个头痛的问题不是服务器的问题,也不是软件的问题,而是中间的硬件问题

    所以现在,我必须对我所做的一切进行反向工程,并尝试让它在两个IP上都工作。它现在对重要的一个有效。但它对旧的不起作用所以。。。我想我得弄明白。[在空中挥舞想象中的拳头]哈哈

    [mysqld-5.0.92-community]Lost   
    connection to MySQL server during query (2013) 
    
    这意味着您在MySQL服务器中发现了一个bug 您可以发布mysqld.err和mysqd.log的尾部吗


    这将使服务器重新启动,并将有效地关闭所有打开的连接

    我在生产环境中没有使用带Access的MySQL,但您遇到的问题听起来与我在SQL server中遇到的问题非常相似。基本上,如果客户机工作站的DNS设置不正确,它可能会对如何解析与SQL Server的连接感到困惑,从而失去连接。在我遇到这种情况的情况下,工作站被错误地配置为将Internet提供商的DNS作为主DSN,但SQL Server是本地服务器,仅在本地LAN上可用(并且不由ISPs DNS映射)

    解决方案是使用本地域控制器作为主DNS。它将查找本地SQL Server的IP,并将任何非本地查找传递到Internet提供商的DNS


    如果没有Windows/Samba域控制器,则需要使用本地LAN的授权名称服务器。或者,您可以通过IP地址连接到MySQL服务器,避免出现问题,或者将其映射到客户端工作站的HOSTS文件中(不建议这样做——这是一种在IP地址更改时导致很难解决问题的好方法)。

    问题是连接超时。这不是可以在ODBC级别更改的设置。我的MySQL提供程序已将超时设置为30秒(您可以在我运行PassThrough查询“SELECT@@wait\u 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
    

    您是否知道可以ping服务器以使其保持活动状态(但不知道如何从msaccess调用):您是否有多个客户端正在运行?如果是,您是否在所有客户机上都存在此问题?您最近是否对MySQL表进行了任何更改?您需要在Access中删除链接表,然后重新链接它们,以便正确查看任何更改。同一个框中的不同mysql客户端会发生什么情况?也许是一个简单的命令行界面?对于ODBC链接表,您不想更新它们,而是想删除它们并从头开始重新创建它们。这是因为链接表定义中缓存的服务器元数据在刷新链接时不会更新。更改链接表或链接视图的结构可能会导致其中断或成为只读,唯一的修复方法是删除t
     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) 
    
    [mysqld-5.0.92-community]Lost   
    connection to MySQL server during query (2013) 
    
    Private Sub Form_Open(Cancel As Integer)
        Me.TimerInterval = 1000 ' 10 seconds
    End Sub
    
    Private Sub Form_Timer()
        Me.Requery
    End Sub