Проблема с добавлением внешнего ключа в таблицу в mySql - PullRequest
2 голосов
/ 29 июля 2010

Я получаю сообщение об ошибке 1452 при попытке сделать это:

ALTER TABLE test.potovanja
ADD CONSTRAINT usr_ind
FOREIGN KEY (username) 
REFERENCES test.users (username)

(Код ошибки: 1452 Не удается добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (тест.,CONSTRAINT # sql-1110_2_ibfk_1 FOREIGN KEY (имя пользователя) Ссылки пользователей (имя пользователя))).Ссылочный ключ и ссылочный ключ имеют одинаковый тип (VARCHAR).

Мой вывод SHOW CREATE TABLE:

CREATE TABLE `users` (
  `username` varchar(45) NOT NULL,
  `password` varchar(45) DEFAULT NULL,
  `ime` varchar(45) DEFAULT NULL,
  `priimek` varchar(45) DEFAULT NULL,
  `nacinp` varchar(45) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `potovanja` (
  `idpotovanja` int(11) NOT NULL AUTO_INCREMENT,
  `od` varchar(45) DEFAULT NULL,
  `do` varchar(45) DEFAULT NULL,
  `datumvstopa` varchar(45) DEFAULT NULL,
  `username` varchar(45) DEFAULT NULL,
  `cena` varchar(45) DEFAULT NULL,
  `datumizstopa` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idpotovanja`),
  KEY `usr_ind` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

Я действительно понятия не имею, что делать.

Ответы [ 2 ]

0 голосов
/ 29 июля 2010

Убедитесь, что все имена пользователей в potovanja существуют в таблице пользователей.У вас, вероятно, есть некоторые в потованье, которых больше нет у пользователей

Что-то подобное сделает это ...

select * from potovanja p where not exists 
   (select * from users where users.username = p.username)
0 голосов
/ 29 июля 2010

Кажется, в таблице users нет строк, но в таблице potovanja есть некоторые.Это означает, что строки в potovanja не имеют ссылки в users.

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