MySQL の照合修復: テーブル レベルの変更
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
This document is part of the guide on How to Fix the Collation and Character Set of a MySQL Database. Please refer to that page for more information.
目次
- MySQL Collation Repair: Database Level Changes
- MySQL の照合修復: テーブル レベルの変更
- MySQL の照合修復: 列レベルの変更
- MySQL の照合修復: 列レベルのエンコーディングの課題
- MySQL の照合修復: ケース スタディ - 本番環境用データベースの修復
使用可能な照合
Not all versions of Confluence support utf8mb4 (which provides support for 4-btye characters). You may need to use utf8.
utf8mb4 を使用可能 | utf8 の使用が必須 |
---|---|
|
|
Before Proceeding
Before proceeding, ensure that you:
- Have shut down Confluence
- Have completed a full database backup
You may also wish to apply these changes in a test environment before applying them to production.
Identifying Database Tables with the incorrect character set or collation
以降の例で、次のように変更します。
<yourDB>
: 実際のデータベース名<charset>
:utf8
またはutf8mb4
<collation>
:utf8_bin
またはutf8mb4_bin
次のクエリを実行します。
SELECT T.TABLE_NAME, C.CHARACTER_SET_NAME, C.COLLATION_NAME
FROM information_schema.TABLES AS T, information_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS C
WHERE C.collation_name = T.table_collation
AND T.table_schema = '<yourDB>'
AND
(
C.CHARACTER_SET_NAME != '<charset>'
OR
C.COLLATION_NAME != '<collation>'
);
Adjusting the collation and character set
To fix a single table, run the following query against your database - change 'tableName
' to suit:
ALTER TABLE `tableName` CHARACTER SET <charset> COLLATE <collation>
To alter all tables in the database, you'll need to generate an ALTER TABLE
query for each table that isn't correctly set. The following script will produce a collection of those queries. Adjust 'database
' to reflect your database name:
SELECT CONCAT('ALTER TABLE ', table_name, ' CHARACTER SET <charset> COLLATE <collation>;')
FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
WHERE C.collation_name = T.table_collation
AND T.table_schema = '<yourDB>'
AND
(
C.CHARACTER_SET_NAME != '<charset>'
OR
C.COLLATION_NAME != '<collation>'
);