ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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のバージョン確認方法
- 実行計画の表示方法
- レプリケーションのステータス確認方法
- 中央値の導き方(バージョン8未満)
- 階層SQL(バージョン8未満)
- パーセンタイルの導き方
- 特定スキーマの全テーブルの全カラム情報を取得する方法
- MySQLで文字列の置換をする方法
人気ページ
- 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アノテーションとは
最近更新/作成されたページ
- SEO タイトル設計とキーワード配置完全ガイド (CTR / LLMO 対応) 2026-06-10 18:13:56
- Vue.js v-bind 完全ガイド (属性 / クラス / スタイル / Composition API) 2026-06-10 18:13:56
- Twitter (X) プラットフォーム完全ガイド 2026 (API / Premium / 競合) 2026-06-10 18:13:56
- PHP 変数スコープ完全ガイド (global / static / use / Arrow Function) 2026-06-10 18:13:56
- jQuery .height() 完全ガイド (innerHeight / outerHeight / box-sizing) 2026-06-10 18:13:56
- WordPress 主要独自関数完全ガイド (Loop / Enqueue / Hook / Conditional Tag) 2026-06-10 18:13:56
- jQuery 要素・値の削除完全ガイド (remove / detach / empty / val) 2026-06-10 18:13:56
- PHP コメント完全ガイド (// / # / /* */ / PHPDoc) 2026-06-10 18:13:56
- PHP 改行出力 (\n / PHP_EOL / nl2br) 完全ガイド 2026-06-10 18:13:56
- JavaScript 確認ダイアログ完全ガイド (confirm / alert / prompt / dialog) 2026-06-10 18:13:56
- UE5 スクリーンショット保存 (Scene Capture) 完全ガイド 2026-06-10 18:12:53
- UE5 Nav Mesh Bounds Volume 完全ガイド 2026-06-10 18:12:53
- EJS テンプレートの共通化 (include) 完全ガイド 2026-06-10 18:12:53
- UE5 カメラ傾き角度制限完全ガイド (Pitch Min/Max) 2026-06-10 18:12:53
- SQLite 完全ガイド (組み込み RDBMS) 2026-06-10 18:12:53
コメントを削除してもよろしいでしょうか?