我正在使用navicat
软件。
我创建了users
表。
我的专栏:
id - fname
id
是primary
和auto increment
。
现在,我想创建info
表:
CREATE TABLE `info` (
`user_id` int NOT NULL ,
`fname` varchar(255) NULL ,
PRIMARY KEY (`user_id`),
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
)
;
但是我收到了这个错误:
can't create table `info` (foreign key constraint is incorrectly formated)
我的用户表sql:
CREATE TABLE `users` (
`id` int(10) UNSIGNED NOT NULL,
`username` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
答案 0 :(得分:1)
SQL脚本中有两个错误。
1)在创建('[', '[', '4', ',', ' ', "'", 'a', 'd', 'r', "'", ',', ' ', '0', ',', ' ', '0', ',', ' ', '1', ',', ' ', "'", '2', '0', '1', '6', '-', '0', '4', '-', '0', '5', 'T', '1', '3', ':', '0', '0', ':', '0', '1', "'", ']', ',', ' ', '[', '1', '1', '5', ',', ' ', "'", 'a', 'd', 'r', "'", ',', ' ', '0', ',', ' ', '0', ',', ' ', '1', ',', ' ', "'", '2', '0', '1', '6', '-', '0', '4', '-', '0', '5', 'T', '1', '4', ':', '0', '0', ':', '0', '1', "'", ']', ',', ' ', '[', '2', '2', '6', ',', ' ', "'", 'a', 'd', 'r', "'", ',', ' ', '0', ',', ' ', '0', ',', ' ', '1', ',', ' ', "'", '2', '0', '1', '6', '-', '0', '4', '-', '0', '5', 'T', '1', '5', ':', '0', '0', ':', '0', '1', "'", ']', ',', ' ', '[', '3', '3', '7', ',', ' ', "'", 'a', 'd', 'r', "'", ',', ' ', '0', ',', ' ', '0', ',', ' ', '1', ',', ' ', "'", '2', '0', '1', '6', '-', '0', '4', '-', '0', '5', 'T', '1', '6', ':', '0', '0', ':', '0', '1', "'", ']', ']')
表时,请为USERS
字段创建索引。如果没有创建索引,则不会在另一个表中为它创建外键。
id
2)创建CREATE TABLE `users` (
`id` int(10) UNSIGNED NOT NULL,
`username` varchar(255) DEFAULT NULL,
INDEX `id_index` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
表info
字段时,user_id
字段的数据类型int(10) UNSIGNED
应与users.id
字段中的数据类型相同。
CREATE TABLE `info` (
`user_id` int(10) UNSIGNED NOT NULL,
`fname` varchar(255) NULL ,
PRIMARY KEY (`user_id`),
INDEX `fk_INFO_idx` (`user_id`),
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
答案 1 :(得分:0)
在此声明中,尝试删除'users'上的引号,因为它是表名,
* FOREIGN KEY(user_id
)参考** users**
(id
)ON DELETE CASCADE *