【问题标题】:VS 2015 Error: The specified DSN contains an architecture mismatch between the Driver and ApplicationVS 2015 错误:指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配
【发布时间】:2021-03-15 21:40:59
【问题描述】:

我有需要连接到远程 MySQL 数据库的 Access 和 Visual Studio 应用程序。我已经有一段时间不用开发 VS 应用程序了,但会不断地开发和增强 Access 版本。前段时间我的 Access 应用程序开始出现问题,Microsoft 技术人员建议我不应该在 64 位 PC 上使用 32 位 Office 应用程序,所以他们通过卸载 Office 应用程序并重新安装 64 位 Office 来说服我.

当然,我在将 Access 应用程序连接到 MySQL 数据库时遇到了错误,因此我下载并安装了 64 位 MySQL 连接器。 32 位连接器是 5.something 版本,而我正在安装的 64 位连接器是 8.something,因此安装没有尝试删除任何内容。一旦我重命名了旧的 DSN 并设置了一个新的 DSN(使用 64 位版本的 ODBC 数据源),一切都会再次运行。

现在我正在尝试使用 VS 应用程序,但它无法运行,出现上述错误。研究表明 2017 年之前的 VS 版本是 32 位的,所以我认为错误是因为 32 位应用程序正在尝试使用 64 位版本的 DSN。

所以现在我有两个挑战:

1:安装 MySQL 连接器会导致之前的版本被删除(因为现在我正在安装的现有 64 位版本和新的 32 位版本都是 8.something)。如何让 32 位和 64 位版本的连接器在我的 PC 上共存?如果我可以同时安装两者,我可以保留名为“MySql”的 64 位 DSN,并添加一个名为“MySql32”的新 32 位 DSN。

2:如果我可以安装两个连接器并创建不同的 DSN,我如何更改我的 VS 以使用正确的连接器?这是我的 App.Config 文件的 sn-p,我认为这是有问题的区域:

<system.data>
  <DbProviderFactories>
    <remove invariant="MySql.Data.MySqlClient"/>
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" 
         type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
  </DbProviderFactories>
</system.data>

但我没有看到任何涉及特定 DSN 的内容。

希望有人可以提供帮助。谢谢...

【问题讨论】:

  • 我不明白那个建议。 32 位 Office/Access 在 Windows 64 位上运行得很好。事实上,除非存在某些条件,否则不建议使用 64 位 Office/Access - 查看support.microsoft.com/en-us/office/…
  • 我知道这是真的,我多年来一直在 64 位计算机上使用 32 位 Office。不记得我当时遇到的问题,那是几个月前的事了。无论如何,这是我现在遇到的实际问题的次要问题。除了这个新问题之外,64 位 Office 工作正常。
  • 我认为this article 会帮助你。注意 -- .NET 提供程序实际上不是 32 位或 64 位的,但 .NET Framework 是。 (我很快就会对那篇文章进行小幅更新......)
  • 另请注意,您提供的 App.Config 的 sn-p 不相关,如果您真的在使用 ODBC,因为没有 ODBC --这就是所有 .NET 配置信息。您可以在同一台 PC 上同时安装用于 MySQL 的 32 位和 64 位 ODBC 驱动程序,但这会使事情变得更复杂。在这种情况下,最好的办法是配置相同的 32 位和 64 位 DSN,因此无论您启动哪个位应用程序都会找到正确的配置和等待驱动程序。
  • 感谢 TallTed 的文章。比以往任何时候都更加困惑。我正在连接到远程 MySQL 服务器,所以“位”是未知的。我知道 VS(或框架)的位数是 32,而 MySQL 连接器是 32 或 64,具体取决于我安装的版本。问题仍然存在,32 位连接器适用于 VS,而 64 位连接器适用于我的 64 位 Office。当您安装另一个版本时,MySQL 安装程序会删除已安装的版本。如何安装 BOTH 连接器以便 Office 和 VS 都可以工作?

标签: ms-access visual-studio-2015 odbc


【解决方案1】:

好的,通过 TallTed 的洞察力解决了这个问题。

我没有安装 MySQL ODBC 连接器(我已经安装了 64 位版本),而是下载并安装了 32 位 .Net 连接器。然后,我使用 32 位 ODBC 管理员创建了一个与 64 位 DSN 同名的新 32 位 DSN。它似乎允许这样做。创建 DSN 后,.Net 版本无需更改即可再次运行。

Access 应用程序也可以使用 64 位 DSN。

非常感谢您的帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 2016-08-26
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多