我无法填充我的MySQL表
我在MySQL数据库上创建了3个表,并希望填充它们,但我有一个例外。这是: 密钥“unique_idx”的重复条目“1” 也许有人能告诉我我做错了什么 InitialDB:我无法填充我的MySQL表,mysql,sql,Mysql,Sql,我在MySQL数据库上创建了3个表,并希望填充它们,但我有一个例外。这是: 密钥“unique_idx”的重复条目“1” 也许有人能告诉我我做错了什么 InitialDB: DROP TABLE IF EXISTS user_roles; DROP TABLE IF EXISTS contacts; DROP TABLE IF EXISTS users; CREATE TABLE IF NOT EXISTS users ( id INTEGER AUTO_INCREMENT
DROP TABLE IF EXISTS user_roles;
DROP TABLE IF EXISTS contacts;
DROP TABLE IF EXISTS users;
CREATE TABLE IF NOT EXISTS users
(
id INTEGER AUTO_INCREMENT,
login VARCHAR(45) NOT NULL,
password VARCHAR(45) NOT NULL,
full_name VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX users_unique_login_idx ON users (login);
CREATE TABLE IF NOT EXISTS user_roles
(
user_id INTEGER NOT NULL,
role VARCHAR(45),
CONSTRAINT user_roles_idx UNIQUE (user_id, role),
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS contacts (
id INTEGER AUTO_INCREMENT,
user_id INTEGER NOT NULL,
first_name VARCHAR(45) NOT NULL,
last_name VARCHAR(45) NOT NULL,
patronymic VARCHAR(45) NOT NULL,
mobile_phone_number VARCHAR(15),
home_phone_number VARCHAR(15),
address VARCHAR(45),
email VARCHAR(30),
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX unique_idx ON contacts (user_id);
人口数据库:
DELETE FROM lardi.users;
DELETE FROM lardi.user_roles;
DELETE FROM lardi.contacts;
INSERT INTO lardi.users
(login,password,full_name) VALUES
('Bill', '112233', 'user'),
('John', '112233', 'user'),
('Mark', '112233', 'user');
INSERT INTO lardi.user_roles
(role,user_id) VALUES
('USER_ROLE',1),
('USER_ROLE',2),
('ADMIN_ROLE',3);
INSERT INTO lardi.contacts
(first_name, last_name, patronymic, mobile_phone_number, home_phone_number, address, email, user_id) VALUES
('Bill','Gates','','+380(66)1234567','','USA','bill@gmail.com', 1),
('Mark','Zukenberg','','+380(66)9876543','+380(44)1122334','USA','mark@gmail.com', 1),
('Barak','Obama','','+380(99)1234567','','USA','barak@gmail.com', 1),
('Michel','Obama','','+380(99)9876543','','USA','michel@gmail.com', 1),
('David','Camaron','','+380(50)5557799','+380(44)0000009','UK','david@gmail.com', 2),
('Steve','Jobs','','+380(00)1100999','','USA','steve@gmail.com', 2),
('Tim','Kuk','','+380(00)2244888','','USA','tim@gmail.com', 2),
('Jim','Carry','','+380(69)8881188','+380(44)1111119','USA','jim@gmail.com', 3),
('David','Backham','','+380(67)90000001','','UK','david@gmail.com', 3);
谢谢您的帮助。删除您的唯一索引
CREATE UNIQUE INDEX unique_idx ON contacts (user_id);
联系人
表用户id
是唯一的。然后,您不能将重复数据插入到用户id
CREATE UNIQUE INDEX unique_idx ON contacts (user_id);
您的contacts
表在user\u id
上有一个唯一的索引
您正在尝试插入一批具有相同用户id的联系人。您有必须唯一的唯一idx,但您正在将重复的值保存到lardi中。contacts我首先添加了此答案