Пытаюсь добавить FK:
set foreign_key_checks = 0;
ALTER TABLE `science_redirects`
ADD CONSTRAINT `fk-contest_id`
FOREIGN KEY (`contest_id`)
REFERENCES `contests` (`id`)
ON DELETE CASCADE;
set foreign_key_checks = 1;
и мне пишет ошибку: [Err] 1823 - Failed to add the foreign key constraint 'fk-contest_id' to system tables
. И так еще на куче ключей которые я пытаюсь добавить. Подскажите в чем дело?
DDL:
CREATE TABLE `science_redirects` (
`id` int(11) NOT NULL,
`old_id` int(11) NOT NULL,
`contest_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `contests` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`number` smallint(6) DEFAULT NULL,
`is_active` tinyint(1) NOT NULL DEFAULT '0',
`is_completed` tinyint(1) NOT NULL DEFAULT '0',
`show_certificates` tinyint(1) NOT NULL DEFAULT '0',
`article_price` int(11) unsigned NOT NULL DEFAULT '0',
`adviser_fullname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`adviser_phone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`main_text` longtext COLLATE utf8_unicode_ci,
`about_text` longtext COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`),
KEY `is_active` (`is_active`)
) ENGINE=InnoDB AUTO_INCREMENT=2020 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Проблема решилась сама собой. Оказывается название ключа должно быть уникальным для всей базы. Т.е. называть ключ надо примерно по такому правилу: fk-table-column
, т.к. в разных таблицах могут быть столбцы с одинаковыми именами (что собственно у меня и было), а вот имя таблицы уже уникально для всей базы. Плохо только что об этом добром в ошибке не написало, а вместо этого какую-то дичь про "system tables" орало... После смены стратегии именования все ключи успешно добавились.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется одна страницаЕё нужно адаптировать под мобильные устройства
Имеется мокап макбука и клиент хочет чтобы карта была непосредственно внутри макбукаНо я понятия не имею как это сделать? Есть какие-то предположения