外部キーのフィールドのタイプは、それらが参照している列のタイプと同じである必要があります。次の(スニッピング)があります:
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 ,
したがって、INT
を参照しようとしています フィールド(テーブル内のstate
およびbrand
)with TINYINT
テーブルlocation
のフィールド 。それが不平を言っているエラーだと思います。そもそもどうやってそれが起こったのか、なぜFOREIGN_KEY_CHECKS
をゼロにするのかわからない MySQLがエラーを診断するのを止めませんが、このタイプの不一致を修正するとどうなりますか?