我无法填充我的MySQL表

我无法填充我的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

我在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,
  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

我首先添加了此答案