MySQL - 将varchar添加为外键

时间:2017-10-19 12:18:46

标签: mysql indexing foreign-keys

我试图将varchar值添加为外键。

我曾尝试在Password_Encryption表中添加一个KEY,但这并不起作用。然后我尝试创建一个INDEX,但它也没有工作。

我得到的错误是"错误代码:1215。无法添加外键约束"。

我知道Password_Encryption的PRIMARY KEY行中的逗号会导致错误。

我与此相关的表格是

CREATE TABLE Login (
login_id INT NOT NULL AUTO_INCREMENT,
login_date DATE NOT NULL,
customer_id INT DEFAULT 0,
business_id INT DEFAULT 0,
password_entered VARCHAR(16) DEFAULT 'password',  
password_encryption VARCHAR(20),
PRIMARY KEY (login_id, login_date)
);

CREATE TABLE Password_Encryption (
encryption_id INT NOT NULL AUTO_INCREMENT,
login_id INT NOT NULL,
password_encryption VARCHAR(20),  
password_saved VARCHAR(16) NOT NULL,
is_valid ENUM('false','true') NOT NULL DEFAULT 'false',
/*KEY pw_enc (password_encryption),*/
PRIMARY KEY (encryption_id),
/*CONSTRAINT pw_enc FOREIGN KEY (password_encryption) REFERENCES Login 
(password_encryption)*/
);

CREATE INDEX pw_enc ON Password_Encryption(password_encryption);

ALTER TABLE Password_Encryption
ADD CONSTRAINT pw_enc FOREIGN KEY (password_encryption) REFERENCES Login (password_encryption);

1 个答案:

答案 0 :(得分:2)

您可以通过运行SHOW ENGINE INNODB STATUS\G并查看LATEST FOREIGN KEY ERROR部分来获取更详细的错误消息。

在您的情况下,您需要在父列(Login.password_encryption)上创建索引以创建外键约束。