[MySQL]エラー1822:外部キー制約の追加に失敗しました。のインデックスがありません



Error 1822 Failed Add Foreign Key Constraint



スキーマ間での外部キーの追加を処理する場合は、ステートメントを使用して以下を追加します。

ALTER TABLE `indoor`.`FAS_CABINET` ADD CONSTRAINT `FAS_CABINET_FK01` FOREIGN KEY (`ASSET_MANAGER_GUID`) REFERENCES `storage`.`COMMON_PERSONS` (`GUID`) ON DELETE NO ACTION ON UPDATE NO ACTION

エラー:エラーコード:1822。外部キー制約の追加に失敗しました。参照テーブル「COMMON_PERSONS」に制約「FAS_CABINET_FK01」のインデックスがありません



GUIDの場所`storage`.`COMMON_PERSONS`は主キーでも、一意のキーでもありません

解決策:GUIDはインデックスが原因ではないため、プライマリキーを指すように変更するか、インデックスを作成するかGUIDを一意のキーに設定する必要があることがわかります。



ファローアップ:

このエラーはクロスライブラリが原因で発生します。同じライブラリにはインデックスは必要ありません。したがって、処理に同義語を使用できます

ORACLEの場合は、シノニムを使用して外部ライブラリを指すテーブルを作成できます