対処法: MysqlでのODBC接続エラー「指定されたDSNには、ドライバーとアプリケーションのアーキテクチャの不一致が含まれています」

自宅のWindowsマシンを64bitに変えたのですが、今まで使ていた「cse」でMysqlのODBC経由で接続すると、

「指定されたDSNには、ドライバーとアプリケーションのアーキテクチャの不一致が含まれています」

というエラーが出て接続ができなくなってしまいました。

Windowsの管理ツールからODBCドライバの登録も行い、接続のテストも成功しているので、ドライバが対応できていないわけではなく、cseから利用する際に不具合が起きているようです。。

いろいろ調べたのですが、ようやく解決したので、顛末をメモしておきたいと思います。

まず、接続できなかった原因ですが、

・MysqlのODBCドライバには32bitのアプリから利用する版と64bitのアプリから利用する版がある

ということのようです。

cseのように、32bitモードで動くアプリの場合は、利用するODBCも32bit版を利用する必要があるせいなのではないかと思います。

そのため、初めに使用していた「mysql-connector-odbc-5.1.11-winx64.msi」ではなく、新たに「mysql-connector-odbc-5.1.11-win32.msi」をダウンロードしてきて、インストールしました。

ODBCの追加設定

通常の管理ツールから開く「データソース(ODBC)」では、64bit版のODBCしか追加できません。

そこで、

C:WindowsSysWOW64odbcad32.exe

をダブルクリックして開くデータソースの追加画面から作業を行います。

すると、下のように、MySQLのODBCドライバが見えるようになります。

これが、32bit版のODBCドライバになります。

あとは、通常通り、ODBCドライバの設定を追加すれば、無事、cseから接続ができるようになりました。