0

「AnyCPU」フラグでコンパイルされた .net アプリケーションがあります。このアプリケーションは、永続ストレージに MySQL を使用します。

奇妙な問題に遭遇しました。つまり、アプリケーションを 32 ビット マシンで実行し、それを別のマシンで実行されている 64 ビット バージョンの MySQL にフックすると、クエリが「テーブル メタデータ ロックを待機中」の状態になります。

アプリケーションと MySQL の両方が同じプラットフォーム、つまり両方が 32 ビットまたは両方が 64 ビットで実行されている場合に、正常に動作することを既にテストしました。

これが私の理論であり、完全に間違っている可能性があります:)

私のアプリケーションは 32 ビット アプリケーションとしてロードされるため、.net コネクタ アセンブリ (「anycpu」でコンパイルされていると思われます) も 32 ビットとしてロードされます。私の推測では、32 ビットの .net コネクタが 64 ビットの MySQL と通信するときに何か問題が発生するということです。

私の理論は正しいですか?

a) いいえの場合、何が問題なのかを調べる最も簡単な方法を教えてください。

b) はいの場合、どうすればよいですか。その理由は、.net フレームワークに mysql の .net コネクタ アセンブリを 32 ビット アプリケーション用に 64 ビット モードでロードさせることができないからです。それが可能だったとしても(同じプロセス内で)、コネクタをロードする前に、アプリケーションがどのタイプのMySQLに接続するかをどうやって知るのでしょうか....?

PS私の直感は、Googleによると、この理論が正しい可能性は非常に低いということです。これまでにこの問題に遭遇したことはありません.

4

1 に答える 1

0

これは、表示されたエラー メッセージから 64/32 ビットとは何の関係もないように思えます。

この SO の質問と回答を見て、手がかりが得られるかどうかを確認してください。「テーブル メタデータ ロックの待機中」状態を引き起こしているトランザクションを見つけるにはどうすればよいですか?

于 2013-06-17T15:55:30.353 に答える