Tips

MySQL 文字コード 【初級編 第5回】

文字コードの変更方法

h4>MySQLのデフォルト文字コードの変更

MySQL全体の文字コードを変更するには以下のファイルを修正する
[root@localhost ~]# vi /etc/my.cnf
[client] default-character-set=utf8
[mysqld] default-character-set=utf8

修正したらMySQLを再起動する
[root@localhost ~]# /etc/init.d/mysqld restart
mysqld を停止中: [ OK ] MySQL Daemon failed to start.
mysqld を起動中: [ OK ]

変更されたか接続して確認してみる
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.1.58 MySQL Community Server (GPL) by Utter Ramblings

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

mysql> s
————–
mysql Ver 14.14 Distrib 5.1.58, for redhat-linux-gnu (i686) using readline 5.1

Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.1.58 MySQL Community Server (GPL) by Utter Ramblings
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 15 sec

Threads: 1 Questions: 5 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.333
————–

ただし既に作成済みのデータベースやテーブルの文字コードは変更されないので注意する

指定したデータベースの文字コードの変更方法

mysql> show create database sample;
+———-+——————————————————————-+
| Database | Create Database |
+———-+——————————————————————-+
| sample | CREATE DATABASE `sample` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+———-+——————————————————————-+
1 row in set (0.00 sec)

変更するには以下のコマンドでOK
mysql> alter database sample character set utf8;
Query OK, 1 row affected (0.00 sec)

変更された。
mysql> show create database sample;
+———-+—————————————————————–+
| Database | Create Database |
+———-+—————————————————————–+
| sample | CREATE DATABASE `sample` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+———-+—————————————————————–+
1 row in set (0.00 sec)

指定したテーブルの文字コードの変更

mysql> use sample;
Database changed

変更前のテーブルの文字コードは latin1 になっている。
mysql> show create table membersG
*************************** 1. row ***************************
Table: members
Create Table: CREATE TABLE `members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL,
`goukei` int(11) DEFAULT NULL,
`max` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=256 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

テーブルの文字コードを変更する
mysql> alter table members charset=utf8;
Query OK, 20 rows affected (0.04 sec)
Records: 20 Duplicates: 0 Warnings: 0

変更された
mysql> show create table membersG
*************************** 1. row ***************************
Table: members
Create Table: CREATE TABLE `members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(100) CHARACTER SET latin1 DEFAULT NULL,
`goukei` int(11) DEFAULT NULL,
`max` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=256 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

以上です。

SQLが学べる 関連連載リンク

データベースの基礎が学べるSQL基礎講座
SQL基礎 連載

練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集

Recent News

Recent Tips

Tag Search