mysql ERROR 3780 (HY000): Referencing column '... and referenced column '....' in foreign key constraint '...' are incompatible
Primary tabs
Forums:
ERROR 3780 (HY000): Referencing column '... and referenced column '....' in foreign key constraint '...' are incompatible.
Например:
ERROR 3780 (HY000): Referencing column 'category_id' and referenced column 'id' in foreign key constraint 'subcategories_ibfk_1' are incompatible.
Для запроса:
CREATE TABLE subcategories (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT 'id subcategories', category_id SMALLINT, FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE, name VARCHAR(255) NOT NULL COMMENT 'Name subcategory', description text NOT NULL COMMENT 'Description subcategory');
При этом таблица categories на id которой мы ссылаемся создавалась так:
CREATE TABLE categories ( id smallint unsigned NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, description text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
Причина
Дело в несовместимости типа создаваемого внешнего ключа для столбца (subcategories.category_id) и той колонки в уже существующей таблице, на которую он будет ссылаться (categories.id).
В данном случае subcategories.category_id в новой таблице создан как обычнй знаковый тип, а categories.id при этом указан явно как беззнаковый тип
Возможное решение
Сделать типы обоих столбцов идентичными. В данном случае либа оба знаковые либо оба беззнакомые.
- Log in to post comments
- 8005 reads