「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によると、この理論が正しい可能性は非常に低いということです。これまでにこの問題に遭遇したことはありません.