1. ホーム
  2. mysql

[解決済み] エラーコードです。1215. 外部キー制約を追加できません (外部キー)

2022-02-08 14:13:02

質問

CREATE DATABASE my_db;

CREATE TABLE class (
  classID int NOT NULL AUTO_INCREMENT,
  nameClass varchar(255),
  classLeader varchar(255),
  FOREIGN KEY (classLeader) REFERENCES student(studentID),
  PRIMARY KEY (classID));

CREATE TABLE student (
  studentID int NOT NULL AUTO_INCREMENT,
  lastName varchar(255),
  firstName varchar(255),
  classID int,
  FOREIGN KEY (classID) REFERENCES class(classID),
  PRIMARY KEY (studentID));

テーブル間のデータの整合性を外部キーで確保し、DBMSがエラーをチェックできるようにしようとしているのですが、なぜかそれができないようです。何がエラーなのか、また代替案はあるのでしょうか?また、外部キーを持つテーブルを埋める場合、外部キー用に確保されたフィールドは埋められませんよね?また、外部キーは全くキーとみなされないのでしょうか?

どのように解決するのですか?

最も可能性の高い問題は、この行です。

FOREIGN KEY (classLeader) REFERENCES student(studentID),

classLeaderのデータ型はVARCHAR(255)です。これは というデータ型に一致します。 参照されるカラムの... student.studentID . そしてもちろん student テーブルが存在しなければならず studentID カラムが存在し、かつ studentID カラムは student テーブルの PRIMARY KEY である必要があります (MySQL では PRIMARY KEY ではなく UNIQUE KEY にすることも、単にインデックスを持つことも可能だと思います)。

いずれにせよ、ここで足りないのは、出力された SHOW CREATE TABLE student;


データ型の不一致があります。

classLeader VARCHAR(255) カラムの外部キー参照にすることはできません。 studentID INT .

2つの列のデータ型は一致しなければならない。