外部キーの追加に失敗した場合の Mysql の解決策: 1. 2 つのフィールドの型またはサイズが一致するかどうかを確認し、それらを変更します; 2. 外部キーが設定されているフィールドのインデックスを作成します; 3.テーブルのエンジンタイプを確認し、InnoDB エンジンに変更します; 4. 外部キー名が一意であるかどうかを確認し、変更します; 5. カスケードの属性値を変更するか、フィールド属性を null を許可するように設定します。
このチュートリアルの動作環境: Windows 10 システム、MySQL バージョン 5.7、Dell G3 コンピューター。
mysql が外部キーの追加に失敗した場合はどうすればよいですか?
MySQL 外部キー作成失敗の理由
まず、外部キーに関連する複数のテーブルにデータが挿入されている場合、外部キーの作成に失敗する可能性があります。キーの挿入が失敗する
MySQL で外部キーを作成するとき、問題が発生して失敗することがよくあります。これは、MySQL には注意を払う必要がある詳細がたくさんあるためです。情報を要約して確認し、リストにまとめました。以下の一般的な理由です。
1. 2 つのフィールドのタイプまたはサイズは厳密には一致しません。たとえば、外部キーが int(10) の場合、外部キーも int(11) や tinyint ではなく int(10) に設定する必要があります。さらに、2 つのフィールドの一方が署名されているか、もう一方が署名されていない (つまり、署名なし) かどうかも決定する必要があります。2 つのフィールドは厳密に一致する必要があります。署名と署名なしの詳細については、http://www を参照してください。 Verysimple.com/blog/?p=57
2. 外部キーを設定しようとしているフィールドにはインデックスが付けられていないか、主キーではありません。そのうちの 1 つが主キーではない場合は、まずそのインデックスを作成する必要があります。
3. テーブルのうち 1 つまたは 2 つは MyISAM エンジン テーブルです。外部キー制約を使用する場合、テーブルは InnoDB エンジンのものである必要があります (実際、両方のテーブルが MyISAM エンジンのものであれば、このエラーはまったく発生しませんが、外部キーは生成されず、インデックスのみが生成されます)テーブルのエンジンタイプを確認する必要があります。
4. 外部キーの名前を繰り返すことはできません。データベースをチェックして外部キー名が一意であることを確認するか、キー名の後にランダムな文字をいくつか追加して、これが原因かどうかをテストする必要があります。
5. ON DELETE SET NULL を設定している可能性がありますが、関連するキー フィールドは NOTS NULL 値に設定されています。カスケード属性値を変更するか、null を許可するようにフィールド属性を設定することで、問題を解決できる可能性があります。
6. Charset オプションと Collate オプションがテーブル レベルとフィールド レベルで一貫していることを確認してください。
7. 外部キーのデフォルト値 (default=0 など) を設定している可能性があります。
8. ALTER ステートメントに構文エラーがあります
エラーが発生した場合は、データベースのテーブルとフィールドの設計を注意深く確認してください。また、エラーの可能性を減らすことができるデータベースの設計と作成にツールを使用してみることをお勧めします。
推奨学習: 「MySQL ビデオ チュートリアル 」
以上がmysql が外部キーの追加に失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。