我使用Jersey在NetBeans 7.3中部署RESTful Web服務。 我使用的是Glassfish 3.1.2以及來自MySQL數據庫的數據。 現在我想配置基本認證。Glassfish中的BasicAuth的MySQL表格
我跟着一些教程首先,在數據庫中只有3桌,就像這樣: http://jugojava.blogspot.pt/2011/02/jdbc-security-realm-with-glassfish-and.html
和所有的都很好。但現在,我想在我的數據庫中應用它。 表格必須遵循一定的規則,對吧?我試圖創建2個新表格:組和login_groups(就像在本教程中那樣,本教程中名爲'users'的表是我的表,名爲'login',已經存在)。 但我無法在表login_groups和登錄之間創建外鍵。 我已經在login_groups和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
,這是在MySQL時,我試圖表login_groups和登錄之間創建外鍵給出的錯誤是:
執行SQL腳本在服務器 錯誤:錯誤1005: 無法創建表'lul.login_groups'(errno:150)
請注意,我試圖單獨創建外鍵,我可以創建第二個。
你知道我在做什麼錯嗎? 或者你知道另一種使用表進行基本身份驗證的方法嗎?
謝謝
感謝理查德,但我已經解決了這個問題以另一種方式,因爲我計算過,其實我不需要login_groups表。是的,我的數據庫中已經有用戶表,並且我的表也已經有了數據。 – user2144555 2013-03-11 09:55:35