Неправильные ограничения в соответствии с MySQL

#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_INCREMENT documents . id int(12) NOT NULL AUTO_INCREMENT оба являются primary_key . видя это, я считаю, что это флаг ‘unsigned’. позвольте мне это быстро проверить.

5. Да, это был неподписанный флаг, который я наблюдал customers . Из сообщения об ошибке я полагал, что код создания был искажен, а не несоответствие типов строк. Большое спасибо!