errno: 121 «Дублирующий ключ при записи или обновлении» при создании таблицы с помощью CONSTRAINT - PullRequest
0 голосов
/ 20 января 2019

Я использовал следующий код для создания таблицы

CREATE TABLE `Notes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `title` text,
  `content` text,
  `public` tinyint(1) DEFAULT NULL,
  `userid` int(11) NOT NULL,
  `beerid` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `userid` (`userid`),
  KEY `beerid` (`beerid`),
  CONSTRAINT `Notes_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `Users` (`id`),
  CONSTRAINT `Notes_ibfk_2` FOREIGN KEY (`beerid`) REFERENCES `Beers` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

ОШИБКА 1005 (HY000) в строке 87: невозможно создать таблицу beersafe. Notes (errno: 121 «Дубликат ключа при записи или обновлении»)

mysqladmin  Ver 9.1 Distrib 10.0.36-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version      10.0.36-MariaDB-0ubuntu0.16.04.1
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         17 hours 14 min 49 sec

(из комментариев)

CREATE TABLE Beers (
    id int(11) NOT NULL AUTO_INCREMENT, 
    name varchar(50) DEFAULT NULL, 
    image text, 
    alcohol float DEFAULT NULL, 
    color varchar(50) DEFAULT NULL, 
    category text, 
    description text, 
    PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

CREATE TABLE Users (
    id int(11) NOT NULL AUTO_INCREMENT, 
    email text, 
    password text, 
    name text, 
    PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; 

SELECT  *
    FROM  INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE  CONSTRAINT_NAME IN ('Notes_ibfk_1', 'Notes_ibfk_2');

| def | BeerSafe | Notes_ibfk_1 | BeerSafe | Notes | FOREIGN KEY |
| def | BeerSafe | Notes_ibfk_2 | BeerSafe | Notes | FOREIGN KEY |

1 Ответ

0 голосов
/ 20 января 2019

Я использовал следующий код для создания таблицы «Заметки»

CREATE TABLE Notes ( id int (11) NOT NULL AUTO_INCREMENT, created отметка времени NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, title текст, content текст, public tinyint (1) DEFAULT NULL, userid int (11) NOT NULL, beerid int (11) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (id), КЛЮЧ userid (userid), КЛЮЧ beerid (beerid) ) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARSET ПО УМОЛЧАНИЮ = latin1;

удален " ОГРАНИЧЕНИЕ Notes_ibfk_1 ИНОСТРАННЫЙ КЛЮЧ (userid) ССЫЛКИ Users (id), ОГРАНИЧЕНИЕ Notes_ibfk_2 ИНОСТРАННЫЙ КЛЮЧ (beerid) ССЫЛКИ Beers (id) «

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...