2015年04月11日

Delphi XE7 + FireDAC + MySQL5.6

DelphiXE7 + FireDAC + MySQL5.6 
Windows7にインストールテストOKで、CentOS6で、エラーが出た。 手元の環境で、確認の方法とかが、わかりにくかったので、メモ。
手元で、CentOS機でテストした場合、一見、動作がおかしいようには、見えなかった。

結論は、テスト機、Windows7に、MySQL5.6を、インストールした場合の、my.ini の初期値と、CentOS6.6にMySQL5.6を、インストールした場合の、my.cnfi の初期値が、違ったため。

w7_56.jpg

な感じで、テストしていきます。 だいたいの動作と、データコンバートのプログラムが出来上がったので、Linuxでのテストを試みます。

ひさひざのCentOS環境でのインストールなので、ググりながらのインストール
このとき、サーバー機のIPアドレス/データベース名/パスワードは、まったく同じとしていました。
双方ともに、my.ini / my.cnfは、初期値の状態で使用。
c6_56.jpg

CentOS環境にすると、集計などで、プログラムが中断されることが、ありました。 SQLをWorkBenchで、試してみると、動作します。
単純な、登録/修正/削除などは、とくに問題なく動作していましたので、問題がClient側なのか、サーバー側なのかが特定しづらかった。
MySQLに詳しい方に、お伺いしましたところ、『Windowsでは通るがCentOSだと通らない、という話は聞いたことがありません』とのことでしたので、こちらの環境に問題があると、判断しました。

Windowsの、my.iniは、問題なしと判断し、(ちょっと面倒なので避けていましたが)CentOSのmy.cnfを確認していくことにしました。
windowsで、
mysql>show grants;SHOW variables like 'character_set%';
My56_win.png
CentOSで、
mysql>show grants;SHOW variables like 'character_set%';
c6_cnf.png

で、文字コード
character_set_database  latin1
character_set_server     latin1
と、なっていた。


my.cnfに追加
[client]
port=3306
default-character-set=utf8

[mysqld]
character-set-server=utf8

MySQLを再起動して、
mysql>show grants;SHOW variables like 'character_set%';
Screenshot-root@localhost:~.png

この後は、テスト動作、はOKでした。

XE8が、でましたね。


posted by a23 at 15:50| Comment(0) | はじめに