MariaDB:错误代码:1005。无法创建表 外键约束格式不正确"



我想创建UserRole表,但mariaDB抱怨以下错误:

Error Code: 1005. Can't create table `testdb`.`userrole` (errno: 150 "Foreign key constraint is incorrectly formed")

我不知道我做错了什么,下面是我想创建的表。

create table if not exists RoleName (
id varchar(24) not null
);
create table if not exists Usr (
id integer auto_increment,
email varchar(48) not null,
usr_name varchar(48),
is_active bool default false,
constraint usr_pk primary key (id)
);
create table if not exists UserRole (
usr_id integer,
usr_role varchar(24),
constraint usr_role_fk foreign key (usr_id)
references Usr(id),
constraint usr_role_usr_fk foreign key (usr_role)
references RoleName(id)
);

我已经搜索了SO的解决方案,但直到现在,没有工作。FK和PK相同。

我得到了一个类似的错误

ERROR 1005 (HY000): Can't create table 'rhapsody.#sql-f1a_11e8cd'

当我跑了

ALTER TABLE VIEW_TRACKS ADD FOREIGN KEY (TRACK_ID) REFERENCES TRACK(TRACK_ID)

因为VIEW_TRACKS。TRACK_ID被定义为一个varchar(20)参考场TRACK。TRACKID被定义为smallint(6).

作为一种解决方法,我创建了一个新的键VIEW_TRACKS。TRACK_PTR类型为smallint(6),并创建了一个引用TRACK的外键。TRACK_ID,它工作了。同样重要的是,所引用的键- TRACK。TRACKID -是UNIque或PRImary。

最新更新