我正在使用 Jersey 在 NetBeans 7.3 中部署 RESTful Web 服务。我正在使用 Glassfish 3.1.2 和 MySQL 数据库中的数据。现在我想配置Basic-Authentication。
我首先遵循了一些教程,数据库中只有 3 个表,如下所示:http: //jugojava.blogspot.pt/2011/02/jdbc-security-realm-with-glassfish-and.html
一切顺利。但现在,我想在我的数据库中应用它。表格必须遵循一定的规则,对吧?我正在尝试创建 2 个新表:groups和login_groups(就像在教程中一样,但我在教程中名为“users”的表是我的名为“ login ”的表,它已经存在)。但我无法在表 login_groups 和登录之间创建外键。我已经在 login_groups 和组之间创建了一个,我没有问题。
这是我的代码表:
表登录:
CREATE TABLE `login` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT,
`login` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(32) COLLATE utf8_bin NOT NULL,
`privileges` enum('system','installer','administrator') COLLATE utf8_bin NOT NULL,
`secret_id` varchar(32) COLLATE utf8_bin NOT NULL,
`User_id` mediumint(8) unsigned NOT NULL,
`isLogged` bit(1) NOT NULL,
`Language` enum('Portuguese','English') COLLATE utf8_bin NOT NULL,
`deleted` bit(1) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `secret_id_UNIQUE` (`secret_id`),
KEY `fk_Login_User1` (`User_id`),
CONSTRAINT `fk_Login_User1` FOREIGN KEY (`User_id`) REFERENCES `user` (`id`)
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
表组:
CREATE TABLE IF NOT EXISTS `lul`.`groups` (
`group_id` MEDIUMINT(8) NOT NULL ,
`group_name` VARCHAR(45) NOT NULL ,
`group_desc` VARCHAR(45) NULL DEFAULT NULL ,
PRIMARY KEY (`group_id`) )
ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;
表login_groups:
CREATE TABLE IF NOT EXISTS `lul`.`login_groups` (
`login_id` MEDIUMINT(8) NOT NULL ,
`group_id` MEDIUMINT(8) NOT NULL ,
PRIMARY KEY (`login_id`, `group_id`) ,
INDEX `fk_login` (`login_id` ASC) ,
INDEX `fk_groups` (`group_id` ASC) ,
CONSTRAINT `fk_login`
FOREIGN KEY (`login_id` ) REFERENCES `lul`.`login` (`id` )
ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_groups`
FOREIGN KEY (`group_id` ) REFERENCES `lul`.`groups` (`group_id` )
ON DELETE NO ACTION ON UPDATE NO ACTION)
ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin
当我尝试在表 login_groups 和 login 之间创建外键时,MySQL 中给出的错误是:
在服务器错误中执行 SQL 脚本:错误 1005:无法创建表 'lul.login_groups' (errno: 150)
请注意,我尝试单独创建外键,我可以创建第二个。
你知道我做错了什么吗?或者您知道另一种使用表进行基本身份验证的方法吗?
谢谢