このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

CentOS MySQL5.6 文字コード設定

MySQL

2013.09.29

この記事は最終更新日から1年以上が経過しています。

前回、

VirtualBoxとVagrantで開発環境を構築 その2 PHP + MySQLインストール

などの記事で、VirtualBoxとVagrantで作った環境にMySQLをインストールしたのですが、

よく考えると文字コードの設定を行っていませんでした。

MySQLで日本語を使おうとすると文字化けが発生するかと思います。

MySQLサーバーを起ち上げ時の文字コードデフォルト設定が必要となりますので、設定していきましょう。

文字コード確認

mysql を起ち上げ、文字コードを確認すると、

mysql > show variables like "char%";

(またはstatusでも確認出来ます。)

このような感じや、もしくは全部 latin1になっていたりします。

このままだと日本語が入力出来ないので設定していきます。

文字コード設定のファイルは my.cnf となります。

MySQL5.6 my.cnf設定

my.cnf ファイルは /etc/以下である /etc/my.cnf にありますので設定していきます。

存在しない場合は、ファイルを作成しましょう。

sudo vi /etc/my.cnf

こちらのファイルに以下を追加。(又は作成)

[client]
default-character-set=utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8 

skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするためとなります。

注意点としましては、MySQL5.6(5.5〜)から

[mysqld]
default-character-set=utf8

が、エラーとなってしまい、記述しているとMySQLサーバーが起ち上がらなくすらなってしまします。

なので、character-set-server = utf8 を記述します。

設定反映 MySQLサーバー再起動

上記のファイルの設定できましたらMySQLサーバーを再起動し、設定を反映させましょう。

従来だと、 mysql.server start 等のコマンドが使えるのですが、CentOSの起動コマンドは /etc/init.d/mysqlで行います。

MySQLサーバー停止

sudo /etc/init.d/mysql stop 

MySQLサーバー起動

sudo /etc/init.d/mysql start 

設定を確認

MySQLサーバーを再起動しましたら確認しましょう。

MySQLに接続、確認

mysql > show variables like "char%";

 

utf8に変更されているのが確認できます。

メデタシメデタシ。

設定前のDB、テーブルの文字コード変更

これで全て解決。

と思いきや、テーブルに日本語のデータを追加しようとすると、

のような感じでデータを挿入出来ません。

これは、設定前に作成したデータベース、テーブル、カラム等には文字コード変更が反映されていない(latin1のまま)ので、手動で変更する必要があります。

既存データベースの文字コード確認
mysql> use 【データベース名】
mysql> status;

Db characterset: 等がlatin1のままだったりします。

ここでlatin1のままだと文字化けしてしまいますので変更しましょう。

ALTER DATABASE 【データベース名】 DEFAULT CHARACTER SET 【文字コード】;

で変更できます。

utf8 変換例:

>mysql ALTER DATABASE dbname DEFAULT CHARACTER SET utf8;

 

既存テーブル、カラムの文字コード確認

続いてテーブルの文字コードの確認を行います。

SHOW CREATE TABLE 【テーブル名】;

上記のコマンドで確認が出来ます。

このような感じで latin1が含まれていましたら文字化けしてしまいます(データ挿入出来ません)。

以下のコマンドで変更します。

ALTER TABLE 【テーブル名】 CONVERT TO CHARACTER SET 【文字コード】;

utf8 変換例:

mysql> ALTER TABLE test CONVERT TO CHARACTER SET utf8;

これで文字コードの修正は完了です。必要であればMySQLを再起動して確認しましょう。

Comment

Related Article

CentOS MySQL(MariaDB) を バージョン10.3に yumでアップデート

2019.03.22

MySQLが起動しない エラー対応 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

2016.04.21

SQL文書きたくないけど手軽にDB扱いたいあなたへ〜 SQLite&Lita 〜

2015.04.26

MySQL オートインクリメントの値をリセット

2015.04.12

MySQLからSQLiteに変換 SQLiteのまとめ

2013.11.17

CentOS MySQL5.6 文字コード設定

2013.09.29

SQLiteを使用する方法 : iPhoneアプリでも有効

2012.03.13

MySQL ブラウザから操作するページ作成03 PHPファイル作成

2011.08.25

MySQL ブラウザから操作するページ作成02 HTML作成

2011.03.29

MySQL ブラウザから操作するページ作成01 データベース作成

2011.03.29

CATEGORY LIST

LATEST NEWS

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

LLaMAモデル GGMLフォーマット(llama.cpp)をRustフレームワーク Leptosを用いて M1MacMiniでサクッと動かす。

Rust

2024.01.11

2024年 狙っているモバイルノートPC

tool

2024.01.07

MacOS XcodeにSDL2を追加

tool

2023.12.26

php 7.4にアップデート

PHP

2023.12.24

5分で覚える Flutter Flameで作る Wave Function Collapse - 波動関数崩壊アルゴリズム

AI・Bot・algorithm

2023.12.20

Flutter - Flameでゲーム作成 (キャラクターの移動)

Flutter

2023.07.23

Flutterで作る ChatGPT Prompt Manager

Flutter

2023.07.12

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US