无法创建表`info`(外键约束格式不正确

时间:2016-09-09 17:33:13

标签: mysql sql

我正在使用navicat软件。

我创建了users表。

我的专栏:

id  - fname

idprimaryauto 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;

2 个答案:

答案 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 *