mysql 데이터베이스의 기존 테이블에 대한 외래 키를 만드는 데 문제가 있습니다.
나는 테이블이있다 exp
:
+-------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+-------+
| EID | varchar(45) | NO | PRI | NULL | |
| Comment | text | YES | | NULL | |
| Initials | varchar(255) | NO | | NULL | |
| ExpDate | date | NO | | NULL | |
| InsertDate | date | NO | | NULL | |
| inserted_by | int(11) unsigned | YES | MUL | NULL | |
+-------------+------------------+------+-----+---------+-------+
sample_df
다음을 사용하여 이것을 참조 하는 새 테이블을 만들고 싶지 않습니다 .
CREATE TABLE sample_df (
df_id mediumint(5) unsigned AUTO_INCREMENT primary key,
sample_type mediumint(5) unsigned NOT NULL,
df_10 BOOLEAN NOT NULL,
df_100 BOOLEAN NOT NULL,
df_1000 BOOLEAN NOT NULL,
df_above_1000 BOOLEAN NOT NULL,
target INT(11) unsigned NOT NULL,
assay MEDIUMINT(5) unsigned zerofill NOT NULL,
insert_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
inserted_by INT(11) unsigned NOT NULL,
initials varchar(255),
experiment VARCHAR(45),
CONSTRAINT FOREIGN KEY (inserted_by) REFERENCES user (iduser),
CONSTRAINT FOREIGN KEY (target) REFERENCES protein (PID),
CONSTRAINT FOREIGN KEY (sample_type) REFERENCES sample_type (ID),
CONSTRAINT FOREIGN KEY (assay) REFERENCES assays (AID),
CONSTRAINT FOREIGN KEY (experiment) REFERENCES exp (EID)
);
하지만 오류가 발생합니다.
ERROR 1215 (HY000): Cannot add foreign key constraint
더 많은 정보를 얻으려면 다음을 수행했습니다.
SHOW ENGINE INNODB STATUS\G
내가 얻은 :
FOREIGN KEY (experiment) REFERENCES exp (EID)
):
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
나에게 열 유형은 둘 다 varchar (45)이기 때문에 일치하는 것 같습니다. (또한 experiment
열을 null이 아닌 것으로 설정하려고 시도 했지만 이것이 수정되지 않았습니다) 그래서 문제는 Cannot find an index in the referenced table where the referenced columns appear as the first columns
. 그러나 이것이 무엇을 의미하는지 또는 어떻게 확인 / 고정하는지 잘 모르겠습니다. 누구에게 제안이 있습니까? 그리고 무엇을 의미 first columns
합니까?