VS 2015 Error: The specified DSN contains an architecture mismatch between the Driver and Application
VS 2015 Error: The specified DSN contains an architecture mismatch between the Driver and Application
我有需要连接到远程 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 应用程序,但它不会 运行,出现上述错误。研究表明 VS 的版本到 2017 年都是 32 位的,所以我认为错误是因为 32 位应用程序正在尝试使用 64 位版本的 DSN。
所以现在我有两个挑战:
1:安装 MySQL 连接器会导致删除之前的版本(因为现在现有的 64 位版本和我正在安装的新 32 位版本都是 8.something) .如何让 32 位和 64 位版本的连接器在我的 PC 上共存?如果我可以同时安装两者,我可以保留名为“MySql”的 64 位 DSN,并添加一个名为“MySql32”的新 32 位 DSN。
2:如果我可以安装两个连接器并创建不同的 DSN,我该如何更改我的 VS 以使用正确的连接器?这是我的 App.Config 文件的片段,我认为这是有问题的区域:
<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 的内容。
希望有人能提供帮助。谢谢...
好的,通过 TallTed 的洞察力解决了这个问题。
我没有安装 64 位版本的 MySQL ODBC 连接器,而是下载并安装了 32 位 .Net 连接器。然后,使用 32 位 ODBC 管理器,我创建了一个与 64 位 DSN 同名的新 32 位 DSN。它似乎允许这样做。创建 DSN 后,.Net 版本无需更改即可再次运行。
Access 应用程序也可以使用 64 位 DSN。
非常感谢您的帮助...
我有需要连接到远程 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 应用程序,但它不会 运行,出现上述错误。研究表明 VS 的版本到 2017 年都是 32 位的,所以我认为错误是因为 32 位应用程序正在尝试使用 64 位版本的 DSN。
所以现在我有两个挑战:
1:安装 MySQL 连接器会导致删除之前的版本(因为现在现有的 64 位版本和我正在安装的新 32 位版本都是 8.something) .如何让 32 位和 64 位版本的连接器在我的 PC 上共存?如果我可以同时安装两者,我可以保留名为“MySql”的 64 位 DSN,并添加一个名为“MySql32”的新 32 位 DSN。
2:如果我可以安装两个连接器并创建不同的 DSN,我该如何更改我的 VS 以使用正确的连接器?这是我的 App.Config 文件的片段,我认为这是有问题的区域:
<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 的内容。
希望有人能提供帮助。谢谢...
好的,通过 TallTed 的洞察力解决了这个问题。
我没有安装 64 位版本的 MySQL ODBC 连接器,而是下载并安装了 32 位 .Net 连接器。然后,使用 32 位 ODBC 管理器,我创建了一个与 64 位 DSN 同名的新 32 位 DSN。它似乎允许这样做。创建 DSN 后,.Net 版本无需更改即可再次运行。
Access 应用程序也可以使用 64 位 DSN。
非常感谢您的帮助...