我正在尝试连接数据库中的两个表。 我有表用户和表权限。
用户表:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) DEFAULT NULL,
`last_name` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
当局表:
CREATE TABLE `authorities` (
`authorities_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`authorities` varchar(45) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`authorities_id`),
CONSTRAINT FOREIGN KEY(`user_id`) REFERENCES user(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
表格是这样创建的。在创建权限表时,我收到了无法创建表的错误。我做错了什么?
答案 0 :(得分:1)
使用以下代码,不使用“CONSTRAINT”
CREATE TABLE `authorities` (
`authorities_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`authorities` varchar(45) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`authorities_id`),
FOREIGN KEY(`user_id`) REFERENCES user(`id`)
ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
或
为CONSTRAINT命名
CREATE TABLE `authorities` (
`authorities_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`authorities` varchar(45) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`authorities_id`),
CONSTRAINT `fk_authorities_user` FOREIGN KEY(`user_id`) REFERENCES user(`id`)
ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
INNODB中的另一个问题是你不能使用“ON DELETE SET DEFAULT”你必须使用“ON DELETE CASCADE”或“ON DELETE SET NULL”