mysql - MySQL ODBC 连接(再次)
问题描述
我知道这个问题已经被问过很多次了,但我的变化略有不同,在花了几个小时试图让一行代码工作后,我把头发拉出来了。我有一个 MySQL 数据库,正在尝试使用 ODBC 进行连接。我使用的是 Windows 10 版本 1909。
Line 13: OpenString ="DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;DATABASE=collections;UID=edited_out;PWD=edited_out;"
Line 14: Conn = Server.Createobject("ADODB.Connection")
Line 15: Conn.open = OpenString
引用的代码在我的带有 Microsoft .NET Framework 版本:4.0.30319 的主 PC 上运行良好;ASP.NET 版本:4.8.4075.0 和 DRIVER={MySQL ODBC 5.3 ANSI 驱动程序}。在具有几乎相同配置的测试 PC 上,除了驱动程序名称外,完全相同的代码会失败。(Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.8.4075.0 和 DRIVER={MySQL ODBC 8.0 ANSI Driver} 或就此而言,DRIVER={MySQL ODBC 8.0 Unicode Driver} - 两者都已安装。)请见附图作为证据。我得到了众所周知且令人沮丧的“未找到数据源名称且未指定默认驱动程序”。代码片段和驱动程序
我意识到这个错误几乎总是由于驱动程序名称错误。但是,我检查并重新检查了我的语法和驱动程序安装。我知道我的 ODBC 安装没有明显的问题,因为我安装 LibreOffice 纯粹是为了测试,并且能够使用此处显示的相同驱动程序在同一台 PC 上通过 ODBC 在几秒钟内连接到同一数据库。ODBC 8.0 版驱动程序有什么不同或特别麻烦吗?我是否需要尝试将此降级到 5.3?
谢谢你的帮助。
解决方案
修复:如果使用 64 位,请为您的站点禁用 32 位应用程序!
(回答我自己的问题,希望它对某人有所帮助。)我想通了。连接字符串是一条红鲱鱼。进一步的侦探工作使我找到了一篇建议检查 IIS 中的应用程序池的帖子。如果您有任何 32 位应用程序,建议在高级设置下为您的站点启用 32 位应用程序,这是相当明显的。
但是,我的应用程序是 64 位的,我注意到在我的工作 PC 上禁用了此选项。在另一台 PC 上禁用它可以恢复连接:显然 Windows 默认使用不存在的 32 位驱动程序,并在失败时显示不明确的错误消息。软件作者似乎为用户挖掘了很多这样的漏洞......
推荐阅读
- algorithm - 受约束的 N-Rook 解数
- amazon-web-services - Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关
- c++ - QT如何查找未翻译的字符串
- awk - awk 搜索文件可能包含多个 id 条目
- reactjs - 如何将 Next.js 应用于使用 create-react-app 创建的 React 项目?
- performance - 在 kubernetes 上查找和设置应用程序资源限制/请求的最佳方法
- c# - 有没有办法反序列化异常对象?
- javascript - 需要从对象数组中提取超过 100,000 人的姓名
- jquery - 在 Selenium 中执行 jQuery
- c - GCC Wunused-variable 警告使用的变量