我创建了一个名为password
的列,当users
尝试创建具有类似密码的帐户时,我希望收到"Duplicate entry for key"
错误。
密钥'password_2 '重复输入'admin'我没有password_2列,只有一个名为“password”的列。
我尝试过设置密码列unique
,但仍然做同样的事情。有什么想法吗?
这是表格架构
CREATE TABLE admin (
id int(16) NOT NULL AUTO_INCREMENT,
email varchar(32) NOT NULL,
firstName varchar(32) NOT NULL,
lastName varchar(32) NOT NULL,
password varchar(32) NOT NULL,
DateOfBirth date NOT NULL,
Gender char(1) NOT NULL,
phoneNumber varchar(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY password_2 (password),
UNIQUE KEY email (email),
UNIQUE KEY password_3 (password),
UNIQUE KEY password_4 (password),
UNIQUE KEY password_5 (password),
KEY phoneNumber (phoneNumber)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
答案 0 :(得分:2)
您需要从unique
中删除password
索引,而不是将其添加到users
我尝试使密码列独一无二,仍然做同样的事情。有什么想法吗?
这就是您收到此错误消息Duplicate entry for key
从您的架构中删除此行
UNIQUE KEY password_2 (password),
UNIQUE KEY password_3 (password),
UNIQUE KEY password_4 (password),
UNIQUE KEY password_5 (password),
您的新架构看起来像
CREATE TABLE admin (
id int(16) NOT NULL AUTO_INCREMENT,
email varchar(32) NOT NULL,
firstName varchar(32) NOT NULL,
lastName varchar(32) NOT NULL,
password varchar(32) NOT NULL,
DateOfBirth date NOT NULL,
Gender char(1) NOT NULL,
phoneNumber varchar(50) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY email (email),
KEY phoneNumber (phoneNumber)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1