今日はOSのビット数によって本来コントロールパネルに表示されるはずの設定画面が表示されない、という動作についてご報告します。
簡単に言えばODBCの設定画面です。
64ビットOSでのODBCプロパティ
例えばWindows7の64ビットエディションがあるとします。
でそのWindowsには32ビット版のOfficeがインストールされています。
よくある64ビットOSに32ビットOfficeを利用する構成になっています。
この構成にmysql-connector-odbcなんかをインストールしてODBCセットアップをしなきゃいけない、としたときの話です。
通常は…
普通はコントロールパネルを開いて「管理ツール」を開く、その中に、「データソース(ODBC)」とあるショートカットをダブルクリックして起動します。
図:コントロールパネル「管理ツール」
この「データソース(ODBC)」を起動するわけです。
そうするとこんな画面が開きます。
図:ODBCデータソースアドミニストレータ画面
例えば、ここの「MS Access Database」をダブルクリックしてプロパティ画面を起動するのですが、64ビットOSの32ビットOfficeを使っている環境だと、こんな画面になってしまいます。
図:エラー画面
----------------------------------------------
---------------------------
Microsoft ODBC アドミニストレーター
---------------------------
システム エラー コード 126: 指定されたモジュールが見つかりません。 (C:\PROGRA~1\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL) のために、Microsoft Access Driver (*.mdb, *.accdb) ODBC ドライバーのセットアップ プログラムを読み込むことができません。
---------------------------
OK
---------------------------
----------------------------------------------
続いてこんな画面が表示されます。
図:エラー画面2
----------------------------------------------
---------------------------
ドライバーの ConfigDSN、ConfigDriver、または ConfigTranslator が失敗しました。
---------------------------
検出されたエラー:
システム エラー コード 126: 指定されたモジュールが見つかりません。 (C:\PROGRA~1\COMMON~1\MICROS~1\OFFICE14\ACEODBC.DLL) のために、Microsoft Access Driver (*.mdb, *.accdb) ODBC ドライバーのセットアップ プログラムを読み込むことができません。
---------------------------
OK
---------------------------
----------------------------------------------
「ODBC ドライバーのセットアップ プログラムを読み込むことができません。」
とメッセージがあるのですが、確かにODBCドライバはセットアップ済みなので起動できないというのはおかしいのです。
このときはどうするのか
結論から言うと、64ビットOSのODBCデータソースはもう一つの起動ファイルから起動します。
そのファイルの格納先が
「C:\Windows\SysWOW64\odbcad32.exe」
です。
図:SysWOW64フォルダ内のファイル
このodbcad32.exeを起動すると、コントロールパネルの管理ツールから起動したODBCプロパティ画面と同じ画面が開きます。
図:ODBCデータソースアドミニストレータ画面2
全く同じ画面に見えますが、こっちから起動するとエラーは表示されず正常に動作します。
試しに「MS Access Database」をダブルクリックすると…
図:ODBC Microsoft Accessセットアップ画面
エラーメッセージは表示されずセットアップ画面が表示されます。これでセットアップ・設定を実施することができます。
つまり?
おそらく、ですが。
64ビットOSにおいてはSysWoW64によってエミュレーションしている32ビットアプリケーションたるodbcad32.exeを起動する必要がある、ということです。つまりコントロールパネルに表示されているのはそのOSのデータソース(ODBC)をセットアップする画面(UI)が表示されるのであってOfficeは32ビットだとかそれに伴ってmysql-connector-odbcもx86側をインストールしているとかいうのはOSにとってはあずかり知らぬこと、ということですね。おそらく。
なので64ビットOSにmysql-connector-odbc-x86.exeをインストールした場合には、コントロールパネルにある「データソース(ODBC)」を起動するのではなく、「C:\Windows\SysWOW64\odbcad32.exe」を起動して設定を実行します。
忘れっぽい未来の自分向けに覚えておくようにします。