Glassfish中BasicAuth的MySQL表格

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之间创建外键。 我已

我正在使用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,但我已经用另一种方式解决了该问题,因为我认为实际上我不需要登录组表。是的,我的数据库中已经有了用户表,我的表也已经有了数据。