バイナリアップグレードまたはバイナリダウングレードでは、テーブルをダンプして再度読み込むことなく、あるバージョンの MySQL を既存のバージョンの「所定の場所に」インストールします。
既存のバージョンのサーバーが動作している場合は、それを停止します。
別のバージョンの MySQL をインストールします。新しいバージョンが元のバージョンより新しい場合はアップグレードになり、古い場合はダウングレードになります。
新しいバージョンのサーバーを起動します。
多くの場合、前のバージョンの MySQL のテーブルは、変更なしで新しいバージョンで使用できます。ただし、キャラクタセットまたは照合の処理方法が変更されて、キャラクタのソート順序が変更されることがあり、これが、影響を受けるキャラクタセットまたは照合を使用するインデックスのエントリの順序付けが不正になる原因になります。こうした変更から、いくつかの問題が生じることがあります。
比較の結果が前の結果と異なる
インデックスエントリの順序付けが間違っているために一部のインデックス値を見つけることができない
ORDER BY
の結果の順序付けが間違っている
CHECK TABLE
によって報告されるテーブルを修復する必要がある
これらの問題の解決方法は、インデックスを削除して再作成するか、テーブル全体をダンプして再度読み込んで、影響を受けるキャラクタセットまたは照合を使用するインデックスを再作成することです。インデックスの再作成については、項2.12.4. 「テーブルまたはインデックスの再作成または修復」 を参照してください。
再作成する必要のあるインデックスがテーブルにあるかどうかを確認するには、次のリストを参照してください。このリストは、インデックスの再作成が必要なキャラクタセットまたは照合の変更が導入された MySQL のバージョンを示しています。各エントリは、変更が行われたバージョンと、その変更の影響を受けるキャラクタセットまたは照合を示しています。変更が特定のバグレポートに関連付けられている場合は、そのバグ番号が示されています。
このリストは、バイナリアップグレードとバイナリダウングレードの両方に適用されます。たとえば、Bug#29461 は MySQL 5.0.48 で修正されたため、5.0.48 より古いバージョンから 5.0.48 以降へのアップグレードと、5.0.48 以降から 5.0.48 より古いバージョンへのダウングレードに適用されます。
影響を受けるインデックスのあるテーブルがある場合は、項2.12.4. 「テーブルまたはインデックスの再作成または修復」 にある手順を使用してインデックスを再作成してください。
多くの場合、CHECK
TABLE ... FOR UPGRADE
を使用して、インデックスの再作成が必要なテーブルを識別できます。(Table
upgrade required. Please do "REPAIR TABLE `tbl_name`" or
dump/reload to fix it!
というレポートが表示されます。)
この場合、CHECK
TABLE
を実行する
mysqlcheck --check-upgrade
または mysql_upgrade
を使用することもできます。ただし、CHECK
TABLE
を使用できるのは、ダウングレードではなくアップグレードのあとだけです。また、CHECK
TABLE
は、すべてのストレージエンジンに適用できるとはかぎりません。CHECK
TABLE
がサポートするストレージエンジンの詳細は、項8.5.2.3. 「CHECK TABLE
構文」
を参照してください。
インデックスの再作成が必要になる変更は次のとおりです。
MySQL 5.0.48 (Bug#29461)
eucjpms
、euc_kr
、gb2312
、latin7
、macce
、ujis
のいずれかのキャラクタセットを使用するカラムのインデックスに影響があります
MySQL 5.1.29、6.0.8
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#39585 を参照)。
MySQL 5.0.48 (Bug#27562)
'`'
GRAVE
ACCENT、'['
LEFT SQUARE
BRACKET、'\'
REVERSE
SOLIDUS、']'
RIGHT
SQUARE BRACKET、'~'
TILDE のいずれかのキャラクタを含むカラムで
ascii_general_ci
照合を使用するインデックスに影響があります
MySQL 5.1.29、6.0.8
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#39585 を参照)。
MySQL 5.1.21 (Bug#29461)
eucjpms
、euc_kr
、gb2312
、latin7
、macce
、ujis
のいずれかのキャラクタセットを使用するカラムのインデックスに影響があります
MySQL 5.1.29、6.0.8
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#39585 を参照)。
MySQL 5.1.23 (Bug#27562)
'`'
GRAVE
ACCENT、'['
LEFT SQUARE
BRACKET、'\'
REVERSE
SOLIDUS、']'
RIGHT
SQUARE BRACKET、'~'
TILDE のいずれかのキャラクタを含むカラムで
ascii_general_ci
照合を使用するインデックスに影響があります
MySQL 5.1.29、6.0.8
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#39585 を参照)。
MySQL 5.1.24 (Bug#27877)
'Ã'
LATIN SMALL
LETTER SHARP S (ドイツ語) を含むカラムで
utf8_general_ci
または
ucs2_general_ci
照合を使用するインデックスに影響があります。
MySQL 5.1.30、6.0.8
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#40053 を参照)。
* MySQL 6.0.1 (WL#3664)
latin2_czech_cs collation
を使用するインデックスに影響があります。
MySQL 5.4.4、6.0.9
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#40054 を参照)。
MySQL 6.0.5 (Bug#33452)
latin2_czech_cs collation
を使用するインデックスに影響があります。
MySQL 5.4.4、6.0.9
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#40054 を参照)。
MySQL 6.0.5 (Bug#27877)
'Ã'
LATIN SMALL
LETTER SHARP S (ドイツ語) を含むカラムで
utf8_general_ci
または
ucs2_general_ci
照合を使用するインデックスに影響があります。
MySQL 6.0.8 では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#40053 を参照)。
MySQL 6.0.6 (Bug#25420)
次の照合を使用するカラムで、そこに示したキャラクタがカラムに含まれる場合に、そのカラムのインデックスに影響があります:
big5_chinese_ci
:
'~'
TILDE または
'`'
GRAVE
ACCENT、cp866_general_ci
:
j
LATIN SMALL LETTER
J、gb2312_chinese_ci
:
'~'
TILDE、gbk_chinese_ci
:
'~'
TILDE
MySQL 5.4.4、6.0.9
では、影響を受けるテーブルを
CHECK
TABLE ... FOR UPGRADE
で検出できます
(Bug#40054 を参照)。