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 Columns with the incorrect character set or collation:
以降の例で、次のように変更します。
<yourDB>
: 実際のデータベース名<charset>
:utf8
またはutf8mb4
<collation>
:utf8_bin
またはutf8mb4_bin
次のクエリを実行します。
SELECT TABLE_NAME, COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = '<yourDB>'
AND
(
CHARACTER_SET_NAME != '<charset>'
OR
COLLATION_NAME != '<collation>'
);
Adjusting the collation and character set of varchar
columns
To adjust all varchar
columns in a database, you'll need to first identify those columns. The following script will generate an alter table
statement for each column that is varchar
and is using the incorrect collation or character set.
以降の例で、次のように変更します。
<yourDB>
: 実際のデータベース名<charset>
:utf8
またはutf8mb4
<collation>
:utf8_bin
またはutf8mb4_bin
次のクエリを実行します。
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET <charset> COLLATE <collation>', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = '<yourDB>'
AND DATA_TYPE = 'varchar'
AND
(
CHARACTER_SET_NAME != '<charset>'
OR
COLLATION_NAME != '<collation>'
);
Adjusting the collation and character set of non varchar
columns
To adjust the non-varchar
columns in the database to use the correct collation, you'll need to first identify those columns. The following script will generate an alter table
statement for each column that is not varchar
and is using the incorrect collation or character set.
以降の例で、次のように変更します。
<yourDB>
: 実際のデータベース名<charset>
:utf8
またはutf8mb4
<collation>
:utf8_bin
またはutf8mb4_bin
次のクエリを実行します。
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, ' CHARACTER SET <charset> COLLATE <collation>', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = '<yourDB>'
AND DATA_TYPE != 'varchar'
AND
(
CHARACTER_SET_NAME != '<charset>'
OR
COLLATION_NAME != '<collation>'
);
外部キー制約について
It may be necessary to ignore foreign key constraints when making changes to a large number of columns. You can use the SET FOREIGN_KEY_CHECKS command to ignore foreign key constraints while you update the database.
SET FOREIGN_KEY_CHECKS=0;
-- Insert your other SQL Queries here...
SET FOREIGN_KEY_CHECKS=1;