mysqlの外部キー作成失敗の問題
djangoフレームワークを使ってmysqlデータベースに接続し、いくつかのmodsを構築し、python manage.py migrateを使用していますが、以下のエラーが発生します。
django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint') です。
まずSHOW ENGINE INNODB STATUSG;を使って、LATEST FOREIGN KEY ERRORのエントリーを探して表示すると、次のように表示されます。
drmk_work/#sql-285c_158a テーブルの外部キー制約でエラーが発生しました。
FOREIGN KEY (`hospital_id`) REFERENCES `hospital_hospital` (`objectId`) を参照してください。
参照されるテーブルの中で
参照されるカラムが最初のカラムとして表示されるか、カラムの種類が
のテーブルと参照されるテーブルが制約のために一致しません。
でENUMとSETの内部記憶型が変更されたことに注意してください。
InnoDB-4.1.12で作成されたテーブルでは、古いテーブルのカラムはそのようなものではありません。
は、新しいテーブルのそのようなカラムから参照することはできません。
http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html を参照してください。
を使用すると、正しい外部キーの定義が得られます。
mysql が外部キーの作成に失敗する理由は、ネット上でさまざまなものが見つかっています。
例えば、1つがINT(10)であれば、外部キーもINT(11)やTINYINTではなく、INT(10)に設定する必要があります。クエリブラウザによってはINT(10)とINT(11)の両方を整数として表示することがあるので、SHOWコマンドでフィールドのサイズを確認する必要があります。さらに、2つのフィールドの一方がSIGNEDで、もう一方がUNSIGNEDであるかどうかを判断しなければなりませんが、これは厳密に一致させなければなりません。signedとunsignedの詳細については、http://www.verysimple.com/blog/?p=57。
2. 参照しようとする外部キーの一方がインデックスされていない、または主キーでない場合、そのキーにインデックスを作成する必要があります。
3. 外部キーの名前が既に存在するキーである。この場合、データベースをチェックして外部キー名がユニークであることを確認するか、キー名にいくつかのランダムな文字を追加して、これが原因であるかどうかをテストする必要があります。
4. どちらか一方または両方がMyISAMエンジンのテーブルで、外部キー制約を使用する場合はInnoDBエンジンでなければなりません。(実際、両方のテーブルが MyISAM エンジンの場合、このエラーは全く発生しませんが、外部キーも生成されません)。ブラウザで問い合わせることで、テーブルのエンジンタイプを設定することができます。
5. ON DELETE SET NULL を設定したが、関連するキーのフィールドが NOTS NULL 値に設定されている可能性があります。カスケードプロパティの値を変更するか、フィールドプロパティをNULLを許可するように設定することで、このバグを修正できる場合があります。
6. 6. CharsetとCollateのオプションがテーブルとフィールドレベルで一貫していることを確認してください。
7. 外部キーにdefault=0のようなデフォルト値を設定している可能性があります。
8. このリレーションシップの内部では、フィールドの1つが、独自の個別のインデックスを持たないキー値の組み合わせの1つであり、この場合、そのための個別のインデックスを作成する必要があります。
9. ALTER ステートメントに構文エラーがあります。
tip #6 によると、Charset が異なる 2 つのテーブルが見つかり、1 つは utf8 で、もう 1 つは latin-1 でした。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例