ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
確認系コマンド
サーバ全体の設定
-- 文字セット
SHOW VARIABLES LIKE 'character_set%';
-- character_set_client | utf8mb4
-- character_set_connection | utf8mb4
-- character_set_database | utf8mb4
-- character_set_filesystem | binary
-- character_set_results | utf8mb4
-- character_set_server | utf8mb4
-- character_set_system | utf8
-- 照合順序
SHOW VARIABLES LIKE 'collation%';
-- collation_connection | utf8mb4_unicode_ci
-- collation_database | utf8mb4_unicode_ci
-- collation_server | utf8mb4_unicode_ci
| 変数 | 意味 |
|---|---|
| character_set_client | クライアントから来る SQL の文字コード |
| character_set_connection | 接続上の文字コード |
| character_set_database | 現在の DB のデフォルト |
| character_set_results | サーバから返す結果の文字コード |
| character_set_server | サーバ全体のデフォルト |
| character_set_system | メタデータ用 (常に utf8 で OK) |
データベース単位
SELECT
SCHEMA_NAME,
DEFAULT_CHARACTER_SET_NAME,
DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'mydb';
-- 別の書き方
SHOW CREATE DATABASE mydb;
-- CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */
テーブル単位
-- CREATE TABLE 文ごと表示
SHOW CREATE TABLE users;
-- 一覧で見たい
SELECT
TABLE_NAME,
TABLE_COLLATION,
(SELECT CHARACTER_SET_NAME
FROM information_schema.COLLATIONS
WHERE COLLATION_NAME = T.TABLE_COLLATION) AS CHARSET
FROM information_schema.TABLES T
WHERE TABLE_SCHEMA = 'mydb';
カラム単位
-- フル情報表示
SHOW FULL COLUMNS FROM users;
-- Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment
-- information_schema からも
SELECT
COLUMN_NAME,
DATA_TYPE,
CHARACTER_SET_NAME,
COLLATION_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'users';
utf8 と utf8mb4 の違い
| 項目 | utf8 (旧) | utf8mb4 (推奨) |
|---|---|---|
| 正体 | MySQL 独自の 3 バイト UTF-8 | RFC 準拠の 4 バイト UTF-8 |
| 絵文字 | NG (4 バイト文字) | OK |
| VARCHAR(255) のバイト数 | 765 B | 1020 B |
| InnoDB の最大インデックス | 影響薄 | 3072 B 制限 (古い設定だと 767 B → 191 文字) |
| MySQL 8.0 のデフォルト | — | utf8mb4_0900_ai_ci |
絶対に utf8mb4 を使ってください。古い記事の CHARSET=utf8 はそのまま流用しないこと。
my.cnf での設定
# /etc/mysql/my.cnf or /etc/my.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = 'SET NAMES utf8mb4'
skip-character-set-client-handshake
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqldump]
default-character-set = utf8mb4
反映:
sudo systemctl restart mysql # or mysqld
mysql -uroot -p -e "SHOW VARIABLES LIKE 'character_set%'"
ALTER で既存 DB / テーブル / カラムを変換
-- データベース全体
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- テーブル + 全カラム一括 (★ CONVERT TO がポイント)
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- テーブルのデフォルトだけ変える (既存カラムは変わらない)
ALTER TABLE users DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 特定カラムだけ
ALTER TABLE users
MODIFY name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注意: 既にデータが入っていて誤った文字コードで保存された (例: 化けた状態のバイトを utf8 として読んでいる) 場合は、CONVERT で再エンコードされて更に化けることがあります。事前にダンプを取得し、テスト DB で検証してください。
接続単位での確認・変更
-- 現在の接続だけ変更
SET NAMES utf8mb4;
-- これは
-- SET character_set_client = utf8mb4;
-- SET character_set_connection = utf8mb4;
-- SET character_set_results = utf8mb4;
-- の 3 つをまとめて実行
-- 個別に
SET character_set_results = utf8mb4;
文字化けの典型パターン
| 症状 | 原因 | 対処 |
|---|---|---|
| 表示が ??? になる | character_set_results = latin1 | SET NAMES utf8mb4 |
| 表示が縺セ縺ソ... (二重エンコード) | utf8 → cp932 → utf8 と通った | ダンプを binary でやり直し、正しい charset で取り込み |
| 絵文字を入れると Incorrect string value | カラムが utf8 (3バイト) | utf8mb4 に変換 |
| JOIN が Illegal mix of collations | 異なる照合順序のカラム比較 | 双方を同じ collation に揃える |
FAQ
Q: collation はどれを選ぶ?
A: 日本語混在なら utf8mb4_unicode_ci または MySQL 8 の utf8mb4_0900_ai_ci (新規)。大小区別したいなら _bin 系。
Q: 既存 DB が utf8 で困っている
A: ダンプ → 新規 DB を utf8mb4 で作成 → 取り込み。本番ではメンテ時間を取って実施。
Q: クライアントだけ utf8mb4 にしても化ける
A: サーバ / DB / テーブル / カラム / 接続 の5 層すべて utf8mb4 で揃える必要があります。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- ダウンロード&インストール方法(Windows)
- インストール方法(Linux)
- コマンド一覧
- SQL
- データ型
- 関数
- 管理ツール
- 設定
- パフォーマンスチューニング関連
- エクスポートおよびインポート
- エラー&トラブル
- 文字コードの確認
- 実行中の SQL の状態確認およびプロセスキルの方法
- パスワードの無効化設定
- root ユーザーの初期パスワード確認方法
- rootユーザーのパスワード変更方法
- LIMIT, OFFSET の始まりと挙動
- mysqlのバージョン確認方法
- MySQLで実行計画を表示する方法
- レプリケーションのステータス確認方法
- 中央値の導き方(バージョン8未満)
- 階層SQL(バージョン8未満)
- パーセンタイルの導き方
- 特定スキーマの全テーブルの全カラム情報を取得する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?