Q84:MySQLの文字化けについて
Q84-1:
MySQLの文字化けについて質問があり、連絡いたしました。現在、PC1ではXAMPPを利用してインストールしたMySQLを、PC2ではXAMPPを用いず,直接インストールしたMySQLを利用しています。添付ファイルにまとめてありますが、コマンドプロンプトから、MySQLを起動し、
MySQL> status
MySQL> show variables like 'char%'
を実行し,文字コードの設定がどちらもsjisとなっているのを確認したのですが、この状況でコマンドプロンプトから、テーブル一覧を表示すると、PC2では文字化けしています。
MySQLのバージョンは、
PC1:5.1.33-community
PC2:5.0.89-community
となっています。
テーブルの作成は、次のSQL文のように、「CREATE TABLE テーブル名 AS SELECT〜」で行っています。
CREATE TABLE `受注先毎集計結果(20070908〜20070914)` AS SELECT 作番1 AS 受注先, ROUND(SUM(時間1),2) AS `時間1の合計(h)`,ROUND(SUM(時間2),2) AS `時間2の
合計(h)`, ROUND(SUM(時間1)+SUM(時間2),2) AS `合計(h)` FROM job WHERE 作番1 IS NOT NULL AND 日付 BETWEEN '2007-09-08' AND '2007-09-14' GROUP BY 作番1;
また、このSQL文で作成したテーブル名はPC1のphpMyAdmin上では,文字化けすることなく表示されています。
今回の問題を解決する方法をお教え願えませんでしょうか?
A84-1:
MySQLのバージョンを変更して構わないようでしたら、PC1に合わせて、MySQL5.1.xにバージョンアップして頂くのが一番宜しいかと存じます。
テーブル名やカラム名に日本語を使用すると、MySQLデータベースに限らず、どうしても様々な問題が起こり易くなります。
また、新規にCreate tableでテーブル作成なさったということですが、PC1からPHPAdmin等でエクスポートしたデータをPC2へ移植したテーブルはないでしょうか。この場合もUtf-8とsjis間でのコンバートの結果、文字化けを起こし易くなります。
今回のご質問の内容は、MZ Platformとは関係なくMySQLに関わる問題ですので、関連の書籍やWEBページ、あるいはMySQLのサポートやユーザグループ等で解決方法を見つけることができます。
例えば、住商情報システム株式会社HP(http://www.scs.co.jp/mysql/)に掲載されているMySQL日本語処理完全解説などが参考になるかと存じます。この資料の53ページ以降には、「日本語テーブル名問題」が記述されています。
MySQL4.1〜5.0ではMySQLメタデータ(カラム名など)が「Utf-8」で保存されているため、sjisで表示しようとすると文字化けが発生すること、などがわかります。
一般的には日本語テーブル名、カラム名を使用するのは避け、SQL文等で表記を工夫するといった場合が多いですが、MZPlatform上でテーブルに表示する際に、処理を追加して列名を日本語表示にするといったこともできます。