2010年04月24日

さくらレンタルサーバのMySQL環境をデータも含めてUTF8に

一回何の気なしにテーブル移行したら日本語ujisでできちゃったみたいなんすよね。何でだか知らんけど。phpAdminのトップページのアレは「utf8_general_ci」にしてたんだけどね。

んなわけで環境全部UTF8にして、中のデータもUTF8で入れなおそうかと。

(1)DB環境(?)をUTF8に
新規作成時のテーブルに影響すんのかね?知らないけど。
MySQLにログインして、自分のデータベースにCONNECTしてからね。

−−−−−−−−−−−−−−−−−−−−
mysql> show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql> alter database character set utf8;
Query OK, 1 row affected (0.01 sec)

mysql> show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql>
−−−−−−−−−−−−−−−−−−−−
なんかUTF8になった気がする。


(2)今のデータのexport
さくらレンタルサーバのphpAdminのエクスポートタブからこんな感じで。
ユーザテーブル全部作り直しなので、左上のユーザテーブル選択して、DROP DATABASEを追加のオプションも選択してから実行。
−−−−−−−−−−−−−−−−−−−−
20100423.jpg
−−−−−−−−−−−−−−−−−−−−
テキストが出現するのでそれを全コピして、メモ帳にペースト。


(3)編集してSQL作成
そのテキストに対して「DEFAULT CHARSET=ujis」となってる部分を「DEFAULT CHARSET=utf8」に全部置換をかける。
そのできたテキストをサーバ側に拡張子sqlのファイル名でUPLOADする。たいしたことないサイズならviで開いて無理くりコピペ楽チン。
※以下例ではここでa.sqlを作ったと仮定。


(4)クライアントをUTF8に切り替えてからimport

クライアント環境をUTF8に切り替える。importに必要かは知らん。
−−−−−−−−−−−−−−−−−−−−
mysql> status

--------------
mysql Ver 14.14 Distrib 5.1.30, for portbld-freebsd7.1 (i386) using 5.2

Connection id: 224869
Current database: appare-kikaku
Current user: appare-kikaku@59.106.27.220
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.42 FreeBSD port: mysql-server-5.1.42
Protocol version: 10
Connection: mysql108.db.sakura.ne.jp via TCP/IP
Server characterset: ujis
Db characterset: utf8
Client characterset: ujis
Conn. characterset: ujis
TCP port: 3306
Uptime: 39 days 9 min 32 sec

Threads: 1 Questions: 7688013 Slow queries: 0 Opens: 112332 Flush tables: 1 Open tables: 7328 Queries per second avg: 2.281
--------------

mysql> set names utf8;
Query OK, 0 rows affected (0.02 sec)

mysql> status
--------------
mysql Ver 14.14 Distrib 5.1.30, for portbld-freebsd7.1 (i386) using 5.2

Connection id: 224869
Current database: appare-kikaku
Current user: appare-kikaku@59.106.27.220
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.42 FreeBSD port: mysql-server-5.1.42
Protocol version: 10
Connection: mysql108.db.sakura.ne.jp via TCP/IP
Server characterset: ujis
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 39 days 9 min 45 sec

Threads: 1 Questions: 7688195 Slow queries: 0 Opens: 112332 Flush tables: 1 Open tables: 7328 Queries per second avg: 2.281
--------------
−−−−−−−−−−−−−−−−−−−−

さっき作ったSQLを実行。以下はa.sqlだけど各自作ったSQLを実行

−−−−−−−−−−−−−−−−−−−−
SQL> source a.sql
....
(エラーとかワーニングを斜め読みして不審ならググる)
....
−−−−−−−−−−−−−−−−−−−−


完了したらこのままログアウトせずに日本語のテーブルselectしてみて日本語出てたらutf8で入ったと思っていんじゃねぇの。多分。

以上!


posted by wani at 21:41 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。