我知道已经存在很多这样的问题,但我的表格恰好更简单,并且两列都被编入索引。所以希望这不会被低估。 :)
这是第一张表:
create table users (
user_num int primary key auto_increment,
first_name varchar(50),
last_name varchar(50),
date_of_birth date,
email varchar(100),
password varchar(50),
note_data longtext
);
这是第二个,它引发了错误:
create table documents
(
doc_num int primary key auto_increment,
user_num int,
doc_data longtext,
note_data longtext,
index(user_num),
foreign key (user_num) references users.user_num on delete cascade
);
这里我在引用密钥时在文档表中创建user_num的索引,并且引用的列已经被索引,作为主键。导致错误的原因是什么?
请帮忙!
答案 0 :(得分:1)
您需要检查ENGINE = InnoDB或ENGINE = MyISAM。还要确保父表和外键列中的主键列必须是相同的数据类型。
试试这个:
create table documents
(
doc_num int primary key auto_increment,
user_num int,
doc_data longtext,
note_data longtext,
foreign key (user_num) references users (user_num) on delete cascade
) engine = InnoDB;
答案 1 :(得分:1)
语法不正确。引用的列必须位于()
create table documents
(
doc_num int primary key auto_increment,
user_num int,
doc_data longtext,
note_data longtext,
foreign key (user_num) references users (user_num) on delete cascade
) engine = InnoDB;