Loại trường trong khóa ngoại phải giống với loại cột mà chúng đang tham chiếu. Bạn có những thứ sau (đoạn trích):
CREATE TABLE IF NOT EXISTS `state` (
`state_id` INT NOT NULL AUTO_INCREMENT ,
...
CREATE TABLE IF NOT EXISTS `brand` (
`brand_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
...
CREATE TABLE IF NOT EXISTS `location` (
...
`state_id` TINYINT UNSIGNED NULL DEFAULT NULL ,
...
`brand_id` TINYINT UNSIGNED NOT NULL ,
vì vậy bạn đang cố tham chiếu đến INT
các trường (trong bảng state
và brand
) với TINYINT
các trường trong bảng location
. Tôi nghĩ đó là lỗi mà nó đang phàn nàn. Không chắc chắn nó xuất hiện như thế nào ngay từ đầu hoặc tại sao lại không xuất hiện FOREIGN_KEY_CHECKS
không ngăn MySQL chẩn đoán lỗi, nhưng điều gì sẽ xảy ra nếu bạn sửa lỗi kiểu này không khớp?