我有一个可以正确运行的应用程序最多我的机器在这里。
其中两个毫无原因地停止了工作,我无法理解(与所有其他的更新相同,相同的网络设置,相同的硬件......)。
问题是数据源连接失败,服务器是其他地方的MySQL服务器,一开始我以为是DNS(这是 DNS,不是 DSN) 问题,因为错误说找不到我的服务器。
奇怪的是,%SYSROOT%/SysWOW64/ODBCAD32.exe
MyODBC 连接器列出了数据源,并且系统 DSN 具有正确的名称(与其他计算机相同)。而且它可以在应用程序无法运行的同一台 PC 上运行。它可以找到数据库,允许选择正确的数据库 - 一切正常。
为了排除 DNS,我用正确的 IP 地址替换了名称;DNS 查询不再发生,但随后我立即收到另一个错误 - Winsock 错误 10022,无效套接字。这告诉我 DNS 错误可能是由于应用程序无法连接到 DNS 服务器套接字造成的。
所以我猜是防火墙的问题。我尝试从 GUI 和命令行禁用它(netsh advfirewall all profile off),但无济于事。尝试登录 pfw 调试日志,但什么都没有(连接甚至没有启动)。没有任何流量到 MySQL TCP 端口 3306 - 它首先被停止。
该计算机上没有安装任何防病毒软件,并且具有所有更新(与所有其他 PC 相同)。
经过广泛的谷歌搜索,一无所获 - 该应用程序位于 UNC 共享上(与其他机器相同,它可以在那里工作),但即使我将它复制到本地驱动器,在这两个驱动器上它仍然不起作用。
到底发生了什么事?
答案1
事实证明我想法我已经检查过这一点,但我的测试有缺陷。
我在谷歌搜索时发现
If the application using ODBC32 resides on a network drive,
and the user has no write access to the root of that drive,
then ODBC cannot establish a network connection.
(Worth 1500 WTF points)
所以我复制了应用程序和桌面上的其他内容。但它仍然不起作用。
我忘记了——当时没有注意——这两台电脑在远程服务器上拥有他们的用户配置文件。
猜猜怎么着?服务器的根目录不可写。
这当然1阻止了 ODBC 建立网络连接。
(1)“当然”,在 MIDI 文件因错误而无法打开的世界中,打开 Microsoft Word 即可清除错误。这件事发生在我身上已近二十年;我仍然希望有一天能够忘记它。