MySQL工作台无法添加外键约束

MySQL工作台无法添加外键约束,mysql,sql,database,key,constraints,Mysql,Sql,Database,Key,Constraints,我的SQL脚本工作正常,直到出现错误1215为止。我不知道密码出了什么问题 代码如下: CREATE DATABASE IF NOT EXISTS ΝΟΣΟΚΟΜΕΙΟ; CREATE TABLE IF NOT EXISTS ΤΜΗΜΑΤΑ (ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ INT, ΟΝΟΜΑΣΙΑ_ΤΜΗΜΑΤΟΣ CHAR, ΣΥΝΟΛΙΚΟΣ_ΑΡΙΘΜΟΣ_ΚΛΙΝΩΝ INT, ΔΙΑΘΕΣΙΜΟΣ_ΑΡΙΘΜΟΣ_ΚΛΙΝΩΝ INT, PRIMARY KEY (ΚΩΔΙ

我的SQL脚本工作正常,直到出现错误1215为止。我不知道密码出了什么问题

代码如下:

CREATE DATABASE IF NOT EXISTS ΝΟΣΟΚΟΜΕΙΟ;

CREATE TABLE IF NOT EXISTS ΤΜΗΜΑΤΑ
(ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ INT,
 ΟΝΟΜΑΣΙΑ_ΤΜΗΜΑΤΟΣ CHAR, 
ΣΥΝΟΛΙΚΟΣ_ΑΡΙΘΜΟΣ_ΚΛΙΝΩΝ INT,
 ΔΙΑΘΕΣΙΜΟΣ_ΑΡΙΘΜΟΣ_ΚΛΙΝΩΝ INT,
PRIMARY KEY (ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ));

CREATE TABLE IF NOT EXISTS ΑΣΘΕΝΕΙΣ
(ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ INT,
 ΟΝΟΜΑ_ΑΣΘΕΝΗ VARCHAR (20), 
ΕΠΩΝΥΜΟ_ΑΣΘΕΝΗ VARCHAR (20),
 ΦΥΛΛΟ VARCHAR (1), 
ΗΜ_ΝΙΑ_ΓΕΝΝΗΣΗΣ DATE,
 ΔΙΕΥΘΥΝΣΗ_ΑΣΘΕΝΗ CHAR ,
 ΤΗΛΕΦΩΝΟ_ΑΣΘΕΝΗ VARCHAR (10),
PRIMARY KEY (ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ));

CREATE TABLE IF NOT EXISTS ΙΑΤΡΟΙ
(ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ INT ,
 ΟΝΟΜΑ_ΙΑΤΡΟΥ VARCHAR (20),
 ΕΠΩΝΥΜΟ_ΙΑΤΡΟΥ VARCHAR (20),
 ΕΙΔΙΚΟΤΗΤΑ CHAR,
ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ INT,
 ΔΙΕΥΘΥΝΣΗ_ΙΑΤΡΟΥ CHAR,
 ΤΗΛΕΦΩΝΟ_ΙΑΤΡΟΥ VARCHAR (10),
PRIMARY KEY (ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ) REFERENCES ΤΜΗΜΑΤΑ(ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ)
);

CREATE TABLE IF NOT EXISTS ΠΕΡΙΣΤΑΤΙΚΑ
(ΚΩΔΙΚΟΣ_ΠΕΡΙΣΤΑΤΙΚΟΥ INT, 
ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ INT, 
ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ INT,
ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ INT, 
ΗΜ_ΝΙΑ_ΕΙΣΑΓΩΓΗΣ DATE, 
ΗΜ_ΝΙΑ_ΕΞΙΤΗΡΙΟΥ DATE,
 ΑΞΙΑ_ΠΕΡΙΣΤΑΤΙΚΟΥ INT,
PRIMARY KEY (ΚΩΔΙΚΟΣ_ΠΕΡΙΣΤΑΤΙΚΟΥ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ) REFERENCES ασθενεισ(ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ) REFERENCES τμηματα(ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ) REFERENCES ιατροι(ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ)
);

CREATE TABLE IF NOT EXISTS ΚΑΤΗΓΟΡΙΕΣ_ΠΡΟΪΟΝΤΩΝ
(ΚΩΔΙΚΟΣ_ΚΑΤΗΓΟΡΙΑΣ INT,
ΟΝΟΜΑΣΙΑ_ΚΑΤΗΓΟΡΙΑΣ CHAR,
PRIMARY KEY (ΚΩΔΙΚΟΣ_ΚΑΤΗΓΟΡΙΑΣ)
);

CREATE TABLE IF NOT EXISTS ΠΡΟΪΟΝΤΑ
(ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ INT,
 ΚΩΔΙΚΟΣ_ΚΑΤΗΓΟΡΙΑΣ INT,
 ΟΝΟΜΑΣΙΑ_ΠΡΟΪΟΝΤΟΣ CHAR,
 ΑΞΙΑ_ΜΟΝΑΔΑΣ_ΠΡΟΪΟΝΤΟΣ INT,
PRIMARY KEY (ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΚΑΤΗΓΟΡΙΑΣ) REFERENCES ΚΑΤΗΓΟΡΙΕΣ_ΠΡΟΪΟΝΤΩΝ(ΚΩΔΙΚΟΣ_ΚΑΤΗΓΟΡΙΑΣ)
);

CREATE TABLE IF NOT EXISTS ΧΡΕΩΣΕΙΣ_ΠΕΡΙΣΤΑΤΙΚΩΝ
(ΚΩΔΙΚΟΣ_ΠΕΡΙΣΤΑΤΙΚΟΥ  INT,
ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ  INT,
 ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ DATE,
 ΠΟΣΟΤΗΤΑ INT,
PRIMARY KEY (ΗΜΕΡΟΜΗΝΙΑ_ΧΡΕΩΣΗΣ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΠΕΡΙΣΤΑΤΙΚΟΥ) REFERENCES ΠΕΡΙΣΤΑΤΙΚΑ(ΚΩΔΙΚΟΣ_ΠΕΡΙΣΤΑΤΙΚΟΥ),
FOREIGN KEY (ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ) REFERENCES ΠΡΟΙΟΝΤΑ(ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ)
);

我对最后两个出现错误的表有问题。有人可以帮助我吗


谢谢,Dimitris

我在Linux、MySQL 5.6.17上测试了这个。我可以通过两个变化来实现这一点:

  • 将表名的大小写与其创建时的拼写方式相匹配:

    CREATE TABLE IF NOT EXISTS ΠΕΡΙΣΤΑΤΙΚΑ
    (
            . . . 
            FOREIGN KEY (ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ) REFERENCES ΑΣΘΕΝΕΙΣ(ΚΩΔΙΚΟΣ_ΑΣΘΕΝΗ),
            FOREIGN KEY (ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ) REFERENCES ΤΜΗΜΑΤΑ(ΚΩΔΙΚΟΣ_ΤΜΗΜΑΤΟΣ),
            FOREIGN KEY (ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ) REFERENCES ΙΑΤΡΟΙ(ΚΩΔΙΚΟΣ_ΙΑΤΡΟΥ)
    );
    
  • 使用相同的拼写,包括∏ΡΪΝΑ中的变音符号:

    CREATE TABLE IF NOT EXISTS ΧΡΕΩΣΕΙΣ_ΠΕΡΙΣΤΑΤΙΚΩΝ
    (
            . .  .
            FOREIGN KEY (ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ) REFERENCES ΠΡΟΪΟΝΤΑ(ΚΩΔΙΚΟΣ_ΠΡΟΪΟΝΤΟΣ)
    );
    

  • 默认情况下,表名可能区分大小写。在表∏中,您引用小写的表,如α∑θενεσ,但之前您定义了大写的表,如∑∑∑ε∑。请使用相同大小写中的表名引用重试:Α∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑只因为未能创建第一个表。虽然我更改了小写,但实际上并没有问题,因为当它创建表时,所有的名称都是小写字母。创建了∏ΕΡ∑ΑΚΑ,但涉及∏ΡΡΝΑ时,它无法添加外键约束。如果我删除了两个外键,那么也会创建∑∑∑∑∏∏∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∏∏∏∏∏∏∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑∑。无法为∏Ρ∑Λ∑Λ、∏ΡΪ∑Ν和∏Ρ∑Ε∑Ρ∑表添加外键。我没有任何拼写错误。如果使用
    mysql-v
    运行脚本,您可以找出哪个CREATE表出错。另一种调试方法是逐个注释掉外键声明,然后重试测试,以找出哪个约束失败。