为什么我尝试创建此 table 时出现此 FK 错误? errno: 150 "外键约束的格式不正确

Why I obtain this FK error when I try to create this table? errno: 150 "Foreign key constraint is incorrectly formed

我在 MySql 数据库上有这个 USER table:

id          bigint(20) unsigned     NO      PRI     NULL    auto_increment
username    varchar(30)             NO      NULL    
pswd        varchar(40)             NO      NULL    

然后我试图创建一个新的 ACCOMODATION table 有一个 user_Id 字段前面的USERtable的外键,我是这样做的:

CREATE
    TABLE testdb.ACCOMODATION
    (
        Id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        user_Id BIGINT(20) NOT NULL,
        
        
        name VARCHAR(255) NOT NULL,
        address VARCHAR(255) NOT NULL,
        tel VARCHAR(20) NOT NULL,
        mobile VARCHAR(20) NOT NULL,
        fax VARCHAR(20) NOT NULL,
        email VARCHAR(80) NOT NULL,
        cap VARCHAR(20) NOT NULL,
        nation VARCHAR(20) NOT NULL,
        region VARCHAR(20) NOT NULL,
        province VARCHAR(20) NOT NULL,
        municipality VARCHAR(20) NOT NULL,
        stars ENUM('ONE', 'TWO', 'THREE', 'FOUR', 'FIVE') NOT NULL,
        lat BIGINT NOT NULL,
        lon BIGINT NOT NULL,
        CONSTRAINT fk_accomodation_user FOREIGN KEY (user_Id) REFERENCES testdb.user (Id),
        PRIMARY KEY (Id)
    )
    ENGINE=InnoDB DEFAULT CHARSET=latin1

但我收到以下错误消息:

#1005 - Can't create table testdb.accomodation (errno: 150 "Foreign key constraint is incorrectly formed")

我该如何解决这个问题?

这些定义不一样:

id          bigint(20) unsigned     NO      PRI     NULL    auto_increment

user_Id BIGINT(20) NOT NULL

无符号 bigint 与有符号 bigint 不同。外键引用中使用的列需要与原始 table.

中的列具有完全相同的类型

ACCOMODATION table 中 user_id 列的数据类型必须与用户 table 中 id 列的数据类型完全相同。

user_id bigint(20) unsigned NO NULL