mariadb 错误代码:1005.无法创建表外键约束格式不正确”

gcmastyq  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(148)

我想创建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是一样的。

9ceoxa92

9ceoxa921#

我得到了一个类似的错误
错误1005(HY 000):无法创建表'rhapsody.#sql-f1 a_11 e8 cd'
当我跑的时候
更改表视图跟踪添加外键(跟踪ID)引用跟踪(跟踪ID)
因为VIEW_TRACKS.TRACK_ID被定义为一个varchar(20),而引用的字段TRACK.TRACKID被定义为一个smallint(6)。
作为一种解决方案,我创建了一个smallint(6)类型的新键VIEW_TRACKS.TRACK_PTR,并创建了一个引用TRACK. TRACKID的外键,它工作了。同样重要的是,引用的键- TRACK.TRACKID -要么是UNIque要么是PRImary。

相关问题