#mysql #foreign-keys #constraints #innodb
#mysql #внешние ключи #ограничения #innodb
Вопрос:
Не уверен, что я здесь наблюдаю, согласно MySQL, мои ограничения искажены (отмеченная часть). Еще не понял, что я сделал не так, используя всемогущую поисковую систему Интернета с G. Совет с благодарностью.
CREATE TABLE `documentsCustomers` (
`id` INT(12) NOT NULL AUTO_INCREMENT,
`document` INT(12) NOT NULL DEFAULT '0',
`customer` INT(12) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
INDEX `document` (`document`),
INDEX `customer` (`customer`)
/*,
CONSTRAINT `fk_document` FOREIGN KEY (`document`) REFERENCES `documents` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT `fk_customer` FOREIGN KEY (`customer`) REFERENCES `customers` (`ID`) ON UPDATE RESTRICT ON DELETE RESTRICT
*/
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1;
Обратите внимание, что на самом деле это правильно, одна таблица имеет ID capital, а другая — нет.
Комментарии:
1. Что это за сообщение об ошибке (завершить, скопировать / вставить, не перефразировать)
2. / * Ошибка SQL (1005): не удается создать таблицу ‘development.documentsCustomers’ (ошибка: 150) Неправильно сформировано ограничение внешнего ключа */
3. Показать определения полей для documents.id и customers.ID .
4.
customers
.ID
int(12) unsigned NOT NULL AUTO_INCREMENTdocuments
.id
int(12) NOT NULL AUTO_INCREMENT оба являются primary_key . видя это, я считаю, что это флаг ‘unsigned’. позвольте мне это быстро проверить.5. Да, это был неподписанный флаг, который я наблюдал
customers
. Из сообщения об ошибке я полагал, что код создания был искажен, а не несоответствие типов строк. Большое спасибо!