Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


14.8.2.2 テーブルが開かれたときの互換性チェック

テーブルがはじめてアクセスされると、InnoDB (InnoDB 1.0 の前のいくつかのリリースを含む) は、そのテーブルが格納されているテーブルスペースのファイル形式が完全にサポートされていることをチェックします。このチェックによって、チェックしないと、新しすぎるデータ構造を使用しているテーブルが検出された場合に発生するクラッシュまたは破損が回避されます。

あるリリースによってサポートされるいずれかのファイル形式を使用しているすべてのテーブルの読み取りまたは書き込みが可能です (ユーザーに十分な権限があると仮定します)。システム構成パラメータ innodb_file_format を設定すると、特定のファイル形式が特定のリリースによってサポートされている場合でも、そのファイル形式を使用する新しいテーブルが作成されるのを防ぐことができます。このような設定は下位互換性を維持するために使用される可能性がありますが、サポートされているいずれかの形式を使用するテーブルへのアクセスは防げません。

指定されたファイル形式に示されているように、5.0.21 より古いバージョンの MySQL は、テーブルが作成されるときに新しいファイル形式が使用された場合、新しいバージョンによって作成されたデータベースファイルを確実に使用することができません。さまざまなエラー状態または破損を回避するために、InnoDB は、ファイルを開くときに (たとえば、テーブルへの最初のアクセス時に) ファイル形式の互換性をチェックします。現在実行中のバージョンの InnoDB が InnoDB データディクショナリ内のテーブルタイプで識別されるファイル形式をサポートしていない場合、MySQL は次のエラーをレポートします。

ERROR 1146 (42S02): Table 'test.t1' doesn't exist

InnoDB はまた、エラーログにもメッセージを書き込みます。

InnoDB: table test/t1: unknown table type 33

このテーブルタイプは、セクション14.8.3「使用されているファイル形式の識別」で説明されている、ファイル形式のバージョンを含むテーブルスペースフラグに等しいはずです。

MySQL 4.1 の前のバージョンの InnoDB では、データベースファイルにテーブル形式の識別子が含まれていませんでした。また、MySQL 5.0.21 の前のバージョンには、テーブル形式の互換性チェックが含まれていませんでした。そのため、新しすぎる形式のテーブルが 5.0.21 の前のバージョンの InnoDB で使用されている場合、正しい動作を保証するための方法はありません。

InnoDB 1.0 以降のファイル形式管理機能 (テーブルスペースのタグ付けおよび実行時チェック) を使用すると、InnoDB は、実行中のバージョンのソフトウェアがデータベース内の既存のテーブルを正しく処理できることをできるだけ早く確認できます。

InnoDB が、サポートしていない形式のファイルを含むデータベースを開くことを (パラメータ innodb_file_format_checkOFF に設定することによって) 許可した場合も、このセクションで説明したテーブルレベルのチェックが引き続き適用されます。

InnoDB Plugin を含む MySQL 5.1 より古いリリースの InnoDB では Barracuda ファイル形式のテーブルを含むデータベースファイルを使用しないようにすることを強くお勧めします。このようなテーブルは、セクション14.8.4「ファイル形式のダウングレード」で説明されている手順を使用して Antelope 形式にダウングレードできます。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.