MySQL ODBCが接続できない!?Windows7 64bitの落とし穴?

おはようございます!INFITH VBA Lab管理人の藤原です。
先日Microsoft OfficeからMySQL ODBCが接続できないという恥ずかしい経験をしましたで今後の戒めのためにメモを残します。

あるシステムをお客様企業までセットアップに訪問した際の事です。システム構成はAccess2007をインターフェースにしてDBはMySQLを使ったクライアントサーバ型システムです。

プログラム開発もサクサク進み内部テストもOK。客先と同じWindows7の環境でも問題無し!

さて現場に行ってサクっとセットアップするかと意気揚々と向かったのですが思わぬトラブルに遭遇。

テスト接続できるのにOfficeからODBC接続出来ない?

ODBCが接続できない!?
何度見直してもデータソースも、サーバーネームも、ユーザーも、パスワードも、どう見ても正しい。
しかもODBCの画面からはテスト接続も問題なく出来てしまう。なのにAccessもExcelも接続できない・・・。
試行錯誤し最新のODBCがまずいのかと思いバージョンを3.51に落としてみてもうまくいかない。

結論から言えばその日は導入を断念しました・・・。

ちなみに客先のパソコンの環境はバラバラで、OSはWindows7で統一されていますが32bitと64bitマシンがそれぞれありました。
また、Officeの環境もバラバラでOffice2010と2007が混在していてAccessがインストールされていないマシンもありました。

AccessがインストールされていないマシンにはそれぞれのOfficeのバージョンのRuntimeをインストールしています。
無論、事前にRuntime環境下でしっかりテストも行っているので問題ないはずです。

MySQL ODBCが接続できない原因

この日はどうしようもなく、帰って頭を切り替えて考えることにしました。
で、結局判った原因がこれ

64bitのWindows7マシンのMySQLのODBCは64bit版をインストール。
しかし、インストールされたOfficeは32bit版

Officeが32bit版だからMySQLのODBCも32bit版を参照する。でもODBCは64bit版だから接続エラーになっていたのですね。
これ正直言って「気が付かなくてもしょうがないだろ!」と言うオチである。

普通に考えてOSが64bitならODBCも64bit版をインストールしてしまう。
でも、64bit Windows環境にはWOW64という32bitアプリケーションが実行出来る環境があったのです・・・。

こんなときの解決方法

とりあえず64bit版ODBCを削除し、32bit版ODBCをインストールしましょう。

さらに厄介な事に・・・64bit環境で32bit版のODBCはコントロールパネルからデータソースを起動してもMySQLのODBCは表示されないのです。

この場合はコントロールパネルから起動せずC:⁄Windows⁄SysWOW64フォルダにある「odbcad32.exe」を起動する必要があります。
これでODBCデータソースアドミニストレーターが表示され32bit版ODBCが設定出来るようになるのですね。

タネを明かせば「なんだそんな事か」という事でも現場に行くと環境の違いから一筋縄ではいきません。
やはり現場には得体の知れない魔物が潜んでいるという事を認識させられました・・・。

という事で今回はMySQLのODBC接続ので気をつけるべき点でした。

関連エントリー

外部接続が許可されていないレンタルサーバのデータベースにローカルPCからODBC接続する
さくらインターネットなど外部接続を許可していないレンタルサーバのデータベース(今回はMySQL)にローカルPCのAccessやExcelからもODBC経由で接続出来る方法を紹介しています。