Технологии
Связывание таблиц - вопрос №235117
Не получается связать две таблицы.
1. Создаю таблицу users
CREATE TABLE IF NOT EXISTS `users` (
`pk_user` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(120) NOT NULL,
`flname` varchar(100) NOT NULL,
`clan_name` varchar(50) NOT NULL,
`password` varchar(64) NOT NULL,
`country_code` char(2) NOT NULL,
`usr_ip` varchar(15) DEFAULT NULL,
`usr_nmb_logins` int(10) unsigned NOT NULL DEFAULT '0',
`usr_signup_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`usr_userid` varchar(32) DEFAULT
`usr_confirm_hash` varchar(255) NOT NULL,
`usr_is_confirmed` tinyint(1) NOT NULL DEFAULT '0',
`usr_resetpassword_hash` varchar(255) NOT NULL,
`usr_is_blocked` tinyint(1) NOT NULL DEFAULT '0',
`usr_is_admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`pk_user`),
UNIQUE KEY `email` (`email`),
KEY `country_code` (`country_code`),
KEY `clan_name` (`clan_name`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
2. Создаю таблицу teems_table
CREATE TABLE IF NOT EXISTS `teems_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`clan_name` varchar(50) NOT NULL,
`clan_teg` varchar(10) NOT NULL,
`captain` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `clan_name` (`clan_name`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
3. Хочу связать их:
ALTER TABLE `users`
ADD CONSTRAINT `table(<== незнаю как правильно создавать внешний ключ)` FOREIGN KEY (`clan_name`) REFERENCES `teems_table` (`clan_name`);
и выводит ошибку:
#1452 — Cannot add or update a child row: a foreign key constraint fails (`dblots`.`#sql-ca8_4f8`, CONSTRAINT `table` FOREIGN KEY (`clan_name`) REFERENCES `teems_table` (`clan_name`))
март 25, 2012 г.
-
Всего ответов: 1
-
Возможно, в одной из этих таблиц есть значение clan_name, которого нет во второй таблице.
Если это не так, есть смысл проверить, действительно ли создаются таблицы InnoDB, иногда настройки базы таковы, что mysql игнорирует явное указание типа таблиц.
Посмотрите SHOW WARNINGS;
Похожие вопросы