Glassfish中BasicAuth的MySQL表格
我正在使用Jersey在NetBeans 7.3中部署RESTful Web服务。 我使用的是Glassfish 3.1.2和MySQL数据库中的数据。 现在我想配置基本身份验证 我首先学习了一些教程,数据库中只有3个表,如下所示: 一切都很顺利。但是现在,我想把它应用到我的数据库中。 桌子必须遵循一定的规则,对吗?我正在尝试创建两个新表:组,和登录组(与教程中一样,但教程中名为“users”的表是名为“登录”的表,它已经存在)。 但是我不能在表login\u组和login之间创建外键。 我已经准备好在登录组和组之间创建一个,并且没有问题 以下是我的代码表: 表登录名:Glassfish中BasicAuth的MySQL表格,mysql,rest,glassfish,basic-authentication,Mysql,Rest,Glassfish,Basic Authentication,我正在使用Jersey在NetBeans 7.3中部署RESTful Web服务。 我使用的是Glassfish 3.1.2和MySQL数据库中的数据。 现在我想配置基本身份验证 我首先学习了一些教程,数据库中只有3个表,如下所示: 一切都很顺利。但是现在,我想把它应用到我的数据库中。 桌子必须遵循一定的规则,对吗?我正在尝试创建两个新表:组,和登录组(与教程中一样,但教程中名为“users”的表是名为“登录”的表,它已经存在)。 但是我不能在表login\u组和login之间创建外键。 我已
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;
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
表组:
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;
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
表登录组:
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;
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\u组和login之间创建外键时,MySQL中给出的错误是:
在服务器中执行SQL脚本
错误:错误1005:
无法创建表'lul.login\u groups'(错误号:150)
请注意,我已经尝试单独创建外键,并且可以创建第二个外键
你知道我做错了什么吗?
或者您知道使用表进行基本身份验证的另一种方法吗
谢谢你所以我通过我的MySQL副本运行了你的SQL,我得到的唯一错误是
创建表登录
脚本;它不喜欢中对表user
的引用
CONSTRAINT `fk_Login_User1` FOREIGN KEY (`User_id`) REFERENCES `user` (`id`)
ON DELETE NO ACTION ON UPDATE NO ACTION
我想你已经在别处定义过了
表
登录组
完全没有问题。您是否试图使用数据更改现有表,其中该数据违反了任何所需的约束条件[在另一个表中引用的id未在该表中定义]?谢谢Richard,但我已经用另一种方式解决了该问题,因为我认为实际上我不需要登录组表。是的,我的数据库中已经有了用户表,我的表也已经有了数据。