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

解決


かず  2012-02-04 21:05:55  No: 41536

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

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


ひろ  2012-02-04 22:28:24  No: 41537

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


かず  2012-02-05 05:45:11  No: 41538

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


igy  2012-02-05 08:00:37  No: 41539

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


かず  2012-02-05 20:46:37  No: 41540

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

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


igy  2012-02-05 21:03:44  No: 41541

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


かず  2012-02-05 21:32:05  No: 41542

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

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

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


igy  2012-02-05 22:23:38  No: 41543

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

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


かず  2012-02-06 03:52:12  No: 41544

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

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


igy  2012-02-06 09:36:13  No: 41545

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

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

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

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

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


igy  2012-02-06 16:24:34  No: 41546

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

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


かず  2012-02-07 07:59:01  No: 41547

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

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

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


igy  2012-02-08 03:45:54  No: 41548

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

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

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

あと、

>Delphi2010pro

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


かず  2012-02-08 05:23:33  No: 41549

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


かず  2012-02-09 02:19:05  No: 41550

やっと、うまく動作するようになりました。まとめてみました。
■環境
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でもそさそうです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加