dbExpressでMySQLサーバに接続するには

解決


かず  2012-02-04 12:05:55  No: 41536  IP: 192.*.*.*

*環境
Windows7(64ビット版)
MySQL(32ビット版)
Delphi2010
でSQLConnectionのプロパティーを設定し、Localhostに接続しようとするとエラーになります。WindowsXPでは難なく接続できたのですが、特別な設定が必要なのでしょうか。

*エラーの内容
LIBMYSQL.dllがみつからない。システムパスにない。

編集 削除
ひろ  2012-02-04 13:28:24  No: 41537  IP: 192.*.*.*

LIBMYSQL.dllをexeと同じ階層にコピーして実行すればエラーはでなくなりますか?

編集 削除
かず  2012-02-04 20:45:11  No: 41538  IP: 192.*.*.*

ひろさん
exeと同じ階層にLIBMYSQL.DLLを置いてもエラーは出ます。
あとDelphiのbinフォルダや、system32にも置いたのですがエラーが出ます。

編集 削除
igy  2012-02-04 23:00:37  No: 41539  IP: 192.*.*.*

c:\windows\SysWOW64 にコピーした場合、どうなりますか?

編集 削除
かず  2012-02-05 11:46:37  No: 41540  IP: 192.*.*.*

igyさん
書くのを忘れましたが、32ビットアプリなのでSysWOW64にもコピーしたのですが、まったく同じエラーメッセージでした。
ODBC接続であれば問題なく接続できます。
またMySQL(64ビット)でも同じ結果です。

基本的にはWindows7(32ビット版)でしかdbExpressは使用できないのでしょうか?

編集 削除
igy  2012-02-05 12:03:44  No: 41541  IP: 192.*.*.*

libmysql.dllはMySQL5.1(32ビット版)のものですか?

編集 削除
かず  2012-02-05 12:32:05  No: 41542  IP: 192.*.*.*

libmysql.dllはMySQL5.1(32ビット版)のものです。
これをSysWOW64などにコピーしています。

XPで作成した(動作する)アプリを持ってきてもエラーになりました。

ためしにMySQLを再インストールしてみます。

編集 削除
igy  2012-02-05 13:23:38  No: 41543  IP: 192.*.*.*

>基本的にはWindows7(32ビット版)でしかdbExpressは使用できないのでしょうか?

Delphi2010ではなく、Delphi2009ですが、
・Windows7(64ビット版)
・MySQL5.1(64ビット版)
で、
dbExpressでMySQLに接続するプログラムは、動作しました。
そのとき、exeと同じフォルダに、
・libmysql.dll (MySQL5.1 32ビット版)
・Delphi2009に付属しているdbxmys.dll
をコピーしていました。

編集 削除
かず  2012-02-05 18:52:12  No: 41544  IP: 192.*.*.*

igyさん
exeと同じフォルダに2ファイルをコピーし試しましたが、
動作しませんでした。

それではigyさんのように
MySQL1(64ビット版)
libmysql.dll (MySQL5.1 32ビット版)
の組み合わせで試してみます。

編集 削除
igy  2012-02-06 00:36:13  No: 41545  IP: 192.*.*.*

かず さん。調べてみたら、Delphi2009 では MySQL 5.0までしか対応していないので、

>Delphi2010ではなく、Delphi2009ですが、

と書きましたが、Delphi2009 ではなく、Delphi XE だったかもしれません。
申し訳ありません。

>dbExpressでMySQLに接続するプログラムは、動作しました。

これに関しても、記憶違いかもしれないので、こちらでも改めて確認してみます。

編集 削除
igy  2012-02-06 07:24:34  No: 41546  IP: 192.*.*.*

確認したところ、以前、試したのは、

Delphi2010ではなく、Delphi XE2で、
・Windows7(64ビット版)
・MySQL5.1(64ビット版)
で、
dbExpressでMySQLに接続するプログラム(32ビット)は動作しました。
そのとき、exeと同じフォルダに、
・libmysql.dll (MySQL5.1 32ビット版)
をコピーしていました。

編集 削除
かず  2012-02-06 22:59:01  No: 41547  IP: 192.*.*.*

どんどん泥沼化しています。
Windows7(64ビット版)
Delphi2010pro
MySQL5.1.61(32ビット版)にバージョンを下げてみました

XPで作成したプロジェクト、Win7問題なく動くものや、igyさんの指摘のようにLibmysql.dllを同一フォルダにコピーすると動いたりと意味不明になっています。

Delphiを起動しSqlconnectionのconnectedをTrueにすると、Libmysql.dllのエラーが発生します。

編集 削除
igy  2012-02-07 18:45:54  No: 41548  IP: 192.*.*.*

現在、Windows7の64ビット環境がないので、ほとんどお役に立てそうもないのですが・・


>MySQL5.1.61(32ビット版)にバージョンを下げてみました

これに付属する libmysql.dll を、c:\windows\SysWOW64 にコピーしてもだめですか?

あと、

>Delphi2010pro

は、最新のUpdateまで適用されていますか?

編集 削除
かず  2012-02-07 20:23:33  No: 41549  IP: 192.*.*.*

igyさん
SysWOW64にはLIBmysql.dllをコピーしています。
DElphi2010はインストール後に自動アップデートしますので適用されています。

編集 削除
かず  2012-02-08 17:19:05  No: 41550  IP: 192.*.*.*

やっと、うまく動作するようになりました。まとめてみました。
■環境
OS:Windows7(64ビット版)
Delphi2010pro
MySQL5.1.61---32ビット版(注1)
■トラブル
開発しようとしたり、XP環境で作成したEXEでLibMySQL.dllのエラー(ファイルが見つからない、ヴァージョンの不整合)
特にSQLConnectionのプロパティをTrueにするとエラーが出て、開発が止まってしまう。
■経緯
MySQLやWindowsのシステムに置くLibMySQL.dllばかりを考えていた。
MySQLの64ビット版や32ビット版の最新版をインストールした。
WindowsXPのときはMySQL5.5.12で問題なかった。
■最終結果
MySQLは安定版の5.1.61をインストール
(注1)LibMySQL.dllは5.5.12のものを使用し、MySQL、Windows、Delphiの関連フォルダにいれ、Dllのバージョンを統一する。
パスは
C:\Windows\sysWOW64 ----- 32bit版のDLLはここに入れる
C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin
C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin

MySQL5.1.61のLibMySQL.dllではうまくいかなかった。
これで開発環境PCは問題ないようです。配布先PCは未テストです。
単純に5.1.XXはOKとならないようです。
最終的にDelphi2010ではMySQLのどのバージョンでOKかは確かめるしかない。
5.1.XXと言われているが5.5.12でもそさそうです。

編集 削除