このページは機械翻訳したものです。
次のリストに示すように、特定の MySQL 機能に関連する SQL ステートメントの中には、NDB テーブルで使用したときにエラーを生成するものがあります。
一時テーブル. 一時テーブルはサポートされません。
NDBストレージエンジンを使用する一時テーブルを作成しようとしたり、NDBを使用するように既存の一時テーブルを変更しようとしたりすると、失敗して次のエラーが発生します:Table storage engine 'ndbcluster' does not support the create option 'TEMPORARY'.-
NDB テーブルのインデックスとキー. 「NDB Cluster」テーブルのキーおよびインデックスには、次の制限事項があります:
カラム幅. 3072 バイトを超える幅の
NDBテーブルカラムに対するインデックスを作成しようとすると、成功しますが、インデックスに実際に使用されるのは最初の 3072 バイトだけです。 このような場合は、警告 Specified key was too long; max key length is 3072 bytes が発行され、SHOW CREATE TABLEステートメントではインデックスの長さが 3072 と表示されます。TEXT および BLOB カラム.
TEXTまたはBLOBデータ型のどちらかを使用するNDBテーブルカラムに対するインデックスは作成できません。-
FULLTEXT インデックス.
NDBストレージエンジンは、MyISAMおよびInnoDBテーブルでのみ可能なFULLTEXTインデックスをサポートしていません。ただし、
NDBテーブルのVARCHARカラムに対するインデックスは作成できます。 USING HASH キーと NULL. 一意キーおよび主キーで NULL 可能カラムを使用すると、これらのカラムを使用するクエリーは完全なテーブルスキャンとして処理されます。 この問題を回避するには、カラムを
NOT NULLにするか、USING HASHオプションを指定せずにインデックスを再作成します。プリフィクス. プリフィクスインデックスはありません。インデックスはカラム全体にのみ付けることができます。 (
NDBのカラムインデックスのサイズは、このセクションで前述したように、カラムの幅 (バイト単位) と常に同じ (最大 3072 バイトまで) です。 追加情報については、セクション23.1.7.6「NDB Cluster でサポートされない機能または欠落している機能」を参照してください。)BIT カラム.
BITカラムを主キー、一意キー、またはインデックスにすることはできません。また、複合の主キー、一意キー、またはインデックスの一部にすることもできません。AUTO_INCREMENT カラム. ほかの MySQL ストレージエンジンと同様に、
NDBストレージエンジンはテーブルあたり最大 1 つのAUTO_INCREMENTカラムを処理できます。 ただし、明示的な主キーを持たない NDB テーブルの場合は、AUTO_INCREMENTカラムが自動的に定義され、「「非表示」」主キーとして使用されます。 このため、明示的なAUTO_INCREMENTカラムを持つテーブルは、PRIMARY KEYオプションを同時に使用してカラムを宣言しないかぎり定義できません。 テーブルの主キーでないAUTO_INCREMENTカラムを持つテーブルを作成しようとして、NDBストレージエンジンを使用すると、失敗してエラーが発生します。
-
外部キーに関する制限. NDB 8.0 での外部キー制約のサポートは、
InnoDBで提供されるものと同等ですが、次の制限事項があります:外部キーとして参照されるすべてのカラムは、それがテーブルの主キーでない場合、明示的な一意キーを必要とします。
-
参照先が親テーブルの主キーである場合、
ON UPDATE CASCADEはサポートされません。これは、主キーの更新が古い行 (古い主キーを含む) の削除と新しい行 (新しい主キーを持つ) の挿入として実装されているためです。 これは
NDBカーネルには表示されないため、これらの 2 つの行は同じであると表示されるため、この更新をカスケードする必要があることを知る方法はありません。 NDB 8.0.16 の時点:
TEXT型またはBLOB型のカラムが子テーブルに含まれている場合、ON DELETE CASCADEはサポートされません。 (Bug #89511、Bug #27484882)SET DEFAULTはサポートされません。 (InnoDBでもサポートされません。)NO ACTIONキーワードは受け入れられますが、RESTRICTとして扱われます。 MySQL 8.0 では、標準の SQL キーワードであるNO ACTIONがデフォルトです。 (InnoDBでも同じです。)NDB Cluster の以前のバージョンでは、別のテーブル内のインデックスを参照する外部キーを持つテーブルを作成するとき、適切なエラーが常に内部的に返されなかったために、インデックス内のカラムの順序が一致しなかった場合でも、外部キーを作成できるように見えることがありました。 この問題を部分的に修正すると、ほとんどの場合に内部的に使用されるエラーが改善されましたが、親インデックスが一意インデックスである場合でも、この状況が発生する可能性があります。 (Bug #18094360)
詳細は、セクション13.1.20.5「FOREIGN KEY の制約」およびセクション1.7.3.2「FOREIGN KEY の制約」を参照してください。
NDB Cluster およびジオメトリデータタイプ.
NDBテーブルでは、ジオメトリデータ型 (WKTおよびWKB) がサポートされます。 ただし、空間インデックスはサポートされません。-
文字セットとバイナリログファイル. 現在、
ndb_apply_statusおよびndb_binlog_indexテーブルはlatin1(ASCII) 文字セットを使用して作成されています。 バイナリログの名前はこのテーブルに記録されるため、ラテン語以外の文字を使用する名前が付けられたバイナリログファイルはこれらのテーブルで正しく参照されません。 これは既知の問題であり、現在修正中です。 (Bug #50226)この問題を回避するには、バイナリログファイルの名前を付けるときや、
--basedir、--log-bin、または--log-bin-indexオプションを設定するときに、Latin-1 文字のみを使用してください。 -
ユーザー定義のパーティション化を使用した「NDB の作成」テーブル. NDB Cluster でのユーザー定義パーティショニングに対する のサポートは、[
LINEAR]KEYパーティショニングに制限されています。CREATE TABLEステートメントでENGINE=NDBまたはENGINE=NDBCLUSTERとともにほかのパーティショニングタイプを使用すると、エラーが発生します。この制限はオーバーライドできますが、本番設定での使用はサポートされていません。 詳細は、ユーザー定義のパーティション分割と NDB ストレージエンジン (NDB Cluster)を参照してください。
デフォルトのパーティション化スキーム. 「すべての NDB Cluster」テーブルは、デフォルトでは、テーブル主キーをパーティション化キーとして使用して
KEYによってパーティション化されます。 テーブルに明示的に設定された主キーがない場合は、代わりにNDBストレージエンジンによって自動的に作成された「隠し」主キーが使用されます。 これらおよび関連する問題の追加情報については、セクション24.2.5「KEY パーティショニング」を参照してください。ユーザーパーティション化された
NDBCLUSTERテーブルが次の 2 つの要件のどちらかまたは両方を満たさない原因となるCREATE TABLEおよびALTER TABLEステートメントは許可されず、失敗してエラーが発生します。テーブルに明示的な主キーが存在する必要があります。
テーブルのパーティショニング式に指定されたすべてのカラムが主キーの一部である必要があります。
例外. 空のカラムリストを使用して (つまり、
PARTITION BY [LINEAR] KEY()を使用して) ユーザーパーティション化されたNDBCLUSTERテーブルを作成する場合は、明示的な主キーは必要ありません。NDBCLUSTER テーブルの最大パーティション数. ユーザー定義のパーティション化を使用したときに
NDBCLUSTERテーブルに定義できるパーティションの最大数は、ノードグループあたり 8 個です。 (NDB Cluster ノードグループの詳細は、セクション23.1.2「NDB Cluster ノード、ノードグループ、フラグメントレプリカ、およびパーティション」 を参照してください。DROP PARTITION の未サポート.
ALTER TABLE ... DROP PARTITIONを使用してNDBテーブルからパーティションを削除することはできません。ALTER TABLEに対するその他のパーティション化拡張機能 -ADD PARTITION、REORGANIZE PARTITION、およびCOALESCE PARTITIONは NDB テーブルでサポートされますが、コピーを使用するため、最適化されません。 セクション24.3.1「RANGE および LIST パーティションの管理」およびセクション13.1.9「ALTER TABLE ステートメント」を参照してください。 行ベースのレプリケーション. NDB Cluster で行ベースレプリケーションを使用する場合、バイナリロギングを無効にすることはできません。 つまり、
NDBストレージエンジンはsql_log_binの値を無視します。-
JSON データ型. MySQL
JSONデータ型は、NDB 8.0 で提供される mysqld 内のNDBテーブルでサポートされます。NDBテーブルには、最大 3 つのJSONカラムを含めることができます。NDB API には、単に
BLOBデータとして表示されるJSONデータを操作するための特別なプロビジョニングはありません。JSONとしてのデータの処理は、アプリケーションで実行する必要があります。