10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb


2.11.4テ

このセクションでは,データ型または文字セットの処理方法に関するMySQLの変更後の,テーブルの再構築方法を説明します。たとえば,照合順序のエラーが修正され、その照合順序を使用する文字カラムのインデックスを更新するためにテーブルの再構築が必要になることがあります。(例については、セクション2.11.3 "テブルまたはンデックスの再構築が必要かどうかのチェック"を参照してください。)检查表mysqlcheck,またはmysql_upgradeによって実行されるようなテーブルチェック操作によって示されるように,テーブルを修復またはアップグレードする必要がある場合があります。

テブルを再構築する方法には,テドする方法や,ALTER TABLEまたは修理表を使用する方法があります。修理表MyISAM存档,およびCSVの各テブルのみに適用されます。

注記

バイナリ(インプレース)アップグレードまたはダウングレード後に,MySQLの異なるバージョンがテーブルを処理しないためにテーブルを再構築する場合は,ダンプしてリロードする方法を使用する必要があります。アップグレドまたはダウングレドの前に,元のバジョンのMySQLを使用してテブルをダンプします。次に,アップグレドまたはダウングレドのあとに,テブルをリロドします。

インデックスを再構築する目的のためだけにダンプしてリロードする方法を使ってテーブルを再構築する場合は,アップグレードまたはダウングレードの前でもあとでもダンプを実行できます。その場合でも,リロドはあとで行う必要があります。

テブルをダンプしてリロドすることによって再構築するには,, mysqldumpを使用してダンプファルを作成し,mysqlでファ邮箱ルをリロ邮箱ドします。

壳>,mysqldumpdb_namet1 >转储。sql壳> mysqldb_name< dump.sql

単独のデータベース内のテーブルをすべて再構築する場合は,データベース名を,そのあとにテーブル名なしで指定します。

壳>,mysqldumpdb_name>转储。sql壳> mysqldb_name< dump.sql

すべてのデタベス内のすべてのテブルをリロドするには,——所有数据库オプションを使用してください。

Shell > mysqldump——所有数据库>转储。SQL shell> mysql < dump.sql

ALTER TABLEでテブルを再構築する場合は,変更を使用します。すなわ,すでに使用しているストレジエンジンを使用するように,テブルを変更するALTER TABLEステトメントです。たとえば,t1InnoDBテブルである場合,次のステトメントを利用します。

ALTER TABLE t1 ENGINE = InnoDB;

ALTER TABLEステトメントで指定するストレジエンジンがわからない場合は,显示创建表を使用してテブル定義を表示します。

检查表操作でテブルのアップグレドが必要であることが示されるためにInnoDBテブルを再構築する必要がある場合は,前述のように, mysqldumpを使用してダンプファルを作成し,mysqlでファ邮箱ルをリロ邮箱ドします。检查表操作で,破損があることが示されたりInnoDBが失敗したりする場合は,innodb_force_recoveryオプションを使用してInnoDBを再起動する方法にいて,セクション14.19.2 " InnoDBのリカバリの強制的な実行"を参照してください。检查表が遭遇している問題のタプを理解するには,セクション13.7.2.2“检查表構文”InnoDBに関する注記を参照してください。

MyISAM存档,またはCSVテーブルについては,テーブルチェック操作で破損があることやアップグレードが必要なことが示された場合は,修理表を使用できます。たとえば,MyISAMテブルを修復するには,次のステトメントを使用します。

mysql>表t1;

mysqlcheck——修复は,コマンド行で修理表ステトメントへのアクセスを提供します。——数据库オプションまたは——所有数据库オプションをそれぞれ使用して,特定のデータベースまたはすべてのデータベースのすべてのテーブルを修復できるため,テーブル修復の方法として,より便利な場合があります。

Shell > mysqlcheck—repair—databasesdb_name...Shell > mysqlcheck——repair——all-databases

MySQL 5.1.24で,Bug #27877に対する修正(utf8_general_ciおよびucs2_general_ci照合順序を修正しました)によって導入された非互換性については,MySQL 5.1.62, 5.5.21,および5.6.5で回避策が実装されています。これらのいずれかのバージョンにアップグレードしてから,影響を受ける各テーブルを次の方法のいずれかを使用して変換します。どの場合も,回避策には,影響されるカラムをutf8_general_mysql500_ciおよびucs2_general_mysql500_ci照合順序を使用するように変更することが含まれます。この照合順序では,元の5.1.24より前のutf8_general_ciおよびucs2_general_ciの順序付けを維持します。

  • テーブルファイルをそのまま残すバイナリアップグレード後に,影響を受けるテーブルを変換するには,新しい照合順序を使用するようにテーブルを変更します。テーブルt1に1または複数の問題のあるuse utf8カラムがあるとします。テーブルをテーブルレベルで変換するには、次のようなステートメントを使用します。

    将表t1转换为字符集utf8;

    カラム固有ベスで変更を適用するには,次のようなステトメントを使用します(核对句を除き,最初に指定されていたカラム定義を必ず繰り返します)。

    ALTER TABLE t1 MODIFY c1 CHAR(N) CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
  • ダンプしてリロドする手順を使用してテブルをアップグレドする場合は,, mysqldumpを使用してテブルをダンプし,ダンプファル内の创建表ステトメントを新しい照合順序を使用するように変更して,テドします。

適切な変更を行うと,检查表はエラをレポトしないはずです。


本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb