mysql が外部キーの追加に失敗した場合の対処方法

藏色散人
リリース: 2023-02-16 10:15:57
オリジナル
3404 人が閲覧しました

外部キーの追加に失敗した場合の Mysql の解決策: 1. 2 つのフィールドの型またはサイズが一致するかどうかを確認し、それらを変更します; 2. 外部キーが設定されているフィールドのインデックスを作成します; 3.テーブルのエンジンタイプを確認し、InnoDB エンジンに変更します; 4. 外部キー名が一意であるかどうかを確認し、変更します; 5. カスケードの属性値を変更するか、フィールド属性を null を許可するように設定します。

mysql が外部キーの追加に失敗した場合の対処方法

このチュートリアルの動作環境: 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 オプションと Collat​​e オプションがテーブル レベルとフィールド レベルで一貫していることを確認してください。

7. 外部キーのデフォルト値 (default=0 など) を設定している可能性があります。

8. ALTER ステートメントに構文エラーがあります

エラーが発生した場合は、データベースのテーブルとフィールドの設計を注意深く確認してください。また、エラーの可能性を減らすことができるデータベースの設計と作成にツールを使用してみることをお勧めします。

推奨学習: 「MySQL ビデオ チュートリアル

以上がmysql が外部キーの追加に失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!