1

MySql 工作台报告我的语法没有错误。我无法弄清楚我的数据库出了什么问题。有任何想法吗?

CREATE TABLE `users` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `login` VARCHAR(35) NOT NULL UNIQUE,
    `pass` VARCHAR(35) NOT NULL,
    `fname` VARCHAR(35),
    `lname` VARCHAR(35),
    `gender` VARCHAR(1),
    `phone` VARCHAR(12),
    `appointments` INT,
    `groups` INT(1) NOT NULL,
    FOREIGN KEY (`groups`) references `groups`(`gnumber`)
);

CREATE TABLE `groups` (
    `gname` VARCHAR(25) NOT NULL,
    `gnumber` INT(1) NOT NULL
);

INSERT INTO `groups`(`gname`, `gnumber`) values ('user', 0);
INSERT INTO `groups`(`gname`, `gnumber`) values ('admin', 1);
INSERT INTO `users`(`login`, `pass`, `groups`) values ('admin', 'secret', 1);
4

1 回答 1

3

错误代码的150意思:

如果错误消息涉及错误 150,则表创建失败,因为未正确形成外键约束。

要解决此问题,只需在groups表格之前创建users表格。

编辑:您还需要gnumber在表中创建一个键groups才能正常工作。

CREATE TABLE `groups` (
  `gname` varchar(25) NOT NULL,
  `gnumber` int(1) NOT NULL,
  PRIMARY KEY (`gnumber`)
);

我不知道您是否希望它成为主键,您必须使用可用的设置,但这对我来说在本地有效,因为我可以创建表并执行插入。

于 2013-11-09T17:56:38.020 回答