0

我有使用“AnyCPU”标志编译的 .net 应用程序。此应用程序使用 MySQL 进行持久存储。

我遇到了一个奇怪的问题,即当我在 32 位机器上运行我的应用程序并将其连接到在另一台机器上运行的 64 位版本的 MySQL 时,我的查询最终处于“等待表元数据锁定”状态。

我已经测试过,当我的应用程序和 MySQL 都在同一平台上运行时它工作正常,即都在 32 位或都在 64 位上。

这是我的理论,可能完全错误:)

由于我的应用程序是作为 32 位应用程序加载的,因此 .net 连接器程序集(我认为它是使用“anycpu”编译的)也将作为 32 位加载。我的猜测是当 32 位 .net 连接器与 64 位 MySQL 通信时出现问题。

我的理论正确吗?

a) 如果不是,请告诉我,找出问题所在的最简单方法是什么?

b) 如果是,我能做些什么。原因是我不能强制 .net 框架为我的 32 位应用程序以 64 位模式加载 mysql 的 .net 连接器程序集。即使这是可能的(在同一个过程中),在加载连接器之前,我到底要如何知道我的应用程序将连接到什么类型的 MySQL ......?

PS我的直觉是,根据谷歌的说法,这个理论不太可能是正确的,以前没有其他人遇到过这个问题。

4

1 回答 1

0

这听起来与给出的错误消息中的 64/32 位无关。

看看这个 SO question and answer,看看是否有任何线索:如何找到导致“等待表元数据锁定”状态的事务?

于 2013-06-17T15:55:30.353 回答