我想创建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是一样的。
1条答案
按热度按时间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。