【问题标题】:MySQL ODBC connections (again)MySQL ODBC 连接(再次)
【发布时间】:2020-07-06 06:47:49
【问题描述】:

我知道这个问题已经被问过很多次了,但我的变化略有不同,在花了几个小时试图让一行代码正常工作后,我不得不把头发拉出来。我有一个 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} - 两者都已安装。)请见附图作为证据。我得到了众所周知且令人沮丧的“未找到数据源名称且未指定默认驱动程序”。 Code snippet and drivers

我意识到这个错误几乎总是由于驱动程序名称错误。但是,我检查并重新检查了我的语法和驱动程序安装。我知道我的 ODBC 安装没有明显的问题,因为我安装 LibreOffice 纯粹是为了测试,并且能够使用此处显示的相同驱动程序在同一台 PC 上通过 ODBC 在几秒钟内连接到同一数据库。 ODBC 8.0 版驱动程序有什么不同或特别麻烦吗?我是否需要尝试将此版本降级到 5.3?

感谢您的帮助。

【问题讨论】:

  • 为什么要使用 ODBC?有一个MySQL client for .NET 可用。
  • 谢谢梅森。如果我找不到解决此问题的方法,我想我会尝试一下,但我已经编写了很多代码,并且更愿意转移它而不是重新开始。
  • 它不会是“重新开始”。它仍然是 ADO.NET。在大多数情况下,它就像更新新的命名空间并从 OdbcConnection 切换到 MySqlConnection 或任何名称一样简单。您可能需要不到一分钟的时间来验证它是否有效,然后再花 10 分钟来更新您的项目。
  • 再次感谢。会看看。我一直在手工编写单个页面而不是使用 Visual Studio,现在可能是我学会使用它的时候了。
  • 所以您是说包含OpenString ="DRIVER={MySQL ODBC 8.0 ANSI Driver} 的代码在安装了驱动程序 5.3 的 PC 上可以正常工作,但在安装了驱动程序 8.0 的 PC 上不能正常工作?

标签: mysql asp.net vb.net odbc


【解决方案1】:

修复:如果使用 64 位,请为您的网站禁用 32 位应用程序!

(回答我自己的问题,希望对某人有所帮助。)我想通了。连接字符串是一条红鲱鱼。进一步的侦探工作使我找到了一篇建议检查 IIS 中的应用程序池的帖子。如果您有任何 32 位应用程序,建议在高级设置下为您的站点启用 32 位应用程序,这是相当明显的。

但是,我的应用程序是 64 位的,我注意到此选项在我的工作 PC 上被禁用。在另一台 PC 上禁用它可以恢复连接:显然 Windows 默认使用不存在的 32 位驱动程序,并在失败时显示不明确的错误消息。软件编写者似乎为用户挖掘了很多这样的漏洞......

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    相关资源
    最近更新 更多