Делаю список друзей для своей небольшой соцсети. Для этого решил сделать связь многие ко многим, но у меня не получилось. В Mysql WorkBench, когда создаешь такую связь, он не ругается. А когда вношу изменения, всплывает ошибка 1215.
Таблица юзеров:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nickname` varchar(45) NOT NULL,
`pass_hash` varchar(80) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `nickname_UNIQUE` (`nickname`)
) ENGINE=MyISAM AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8;
Создание таблицы друзей:
Executing:
CREATE TABLE `social`.`new_table` (
`id1` INT(11) NOT NULL,
`id2` INT(11) NOT NULL,
INDEX `foreign1_idx` (`id1` ASC, `id2` ASC),
CONSTRAINT `foreign1`
FOREIGN KEY (`id1` , `id2`)
REFERENCES `social`.`users` (`id` , `id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8;
ERROR 1215: Cannot add foreign key constraint
SQL Statement:
CREATE TABLE `social`.`new_table` (
`id1` INT(11) NOT NULL,
`id2` INT(11) NOT NULL,
INDEX `foreign1_idx` (`id1` ASC, `id2` ASC),
CONSTRAINT `foreign1`
FOREIGN KEY (`id1` , `id2`)
REFERENCES `social`.`users` (`id` , `id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
Operation failed: There was an error while applying the SQL script to the database.
Что я делаю не так? Можете предлагать свои варианты реализации, если через этот никак.
Вопрос закрыт. Вместо 1-го foreign key, который соединяет user.id с friendlist.id1 и friendlist.id2, нужно было создать 2 разных foreign key:
CREATE TABLE `friendlist` (
`id1` int(11) NOT NULL,
`id2` int(11) NOT NULL,
KEY `foreign1_idx` (`id1`),
KEY `foreign_name2_idx` (`id2`),
CONSTRAINT `foreign1` FOREIGN KEY (`id1`) REFERENCES `users` (`id`) ON
DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `foreign2` FOREIGN KEY (`id2`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Спасибо пользователю Sergey Moiseenko за ответ.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Смотрю на код сравнения строк равной длины, а именно на место, где происходит непосредственно сравнение значений по указателю
Есть страница добавления человека в базу данных (фио, адрес и тд), также есть 4 типа телефонных номеров (рабочий, городской и др
Я использую в своем проекте jwt токеныКод для создания ClaimsIdentity:
Есть DLL написанная на DelphiИсходников от нее у меня нет