1. ホーム
  2. データベース
  3. Mysql

Djangoマイグレーションエラー 外部キー制約を追加できない

2022-01-21 14:25:43

エラー解析

データベースの入れ替え後
文字セットエラー
元のライブラリと新しいライブラリの外部キーの文字セットが同じでないことを意味する
写真の通りです。

解決策

1. 移行はまず一度失敗する必要がある(このエラーが出るので、すでに一度移行していることになる)。

2. 現在のテーブルの外部キー・フィールドの文字セット(またはCOLLATE)を、外部キー関連テーブルの文字セットに変更します。

  1. テーブル作成ステートメントを表示する(主に外部キー関連テーブルの主キーの文字セットを確認する)。
    SHOW CREATE TABLE `user_group` (View the command to create a table)
    
    
  2. 文字セットの変更
    ALTER TABLE user_group_info MODIFY employee_id VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    

3. 新しいテーブルに外部キー制約を手動で追加する

alter table user_group_info add constraint `user_group_info_id_869a94b79388475b_fk_employee_info_id` foreign key (`employee_id`) REFERENCES `employee_info` (`id`) ON DELETE SET NULL ON UPDATE NO ACTION;

4. 第二次移行プラスフェイク

python manage.py migrate --fake