MySQLで「DELETE CASCADE」が設定できない場合の確認項目
MySQLでデータをインポートしようとして失敗したり、インポートしたデータに「DELETE CASCADE」を設定しようとして失敗した経験はありませんか?
原因は関連先とのデータ整合性の欠如
この原因はフィールドに設定しようとしている外部キーにそのデータが存在しない場合に発生します。 例えば「DELETE CASCADE」を設定しようとしているフィールドの値に「100」があり、そのフィールドと関連付けようとしているフィールドに「100」というデータが存在していない場合ですね。
対策は、データをちゃんと合わせること
この場合は「DELETE CASCADE」を設定しようとしているフィールドの「100」が設定されているフィールドを削除するか、関連先のテーブルに「100」が設定されている行を追加することで設定することができます。
確かに、リレーションを設定しようとしているのに該当するデータが存在しないのですから、エラーが出るのも当然ですね。 事前にデータの整合性は合わせておきましょうってことで。
2012-07-25