2013-11-09 119 views
1

MySql工作台报告我的语法没有错误。我无法弄清楚我的数据库有什么问题。有任何想法吗?MySql错误代码:1005无法创建表errno:150

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); 
+1

颠倒表格的创建顺序 –

回答

3

错误代码150表示:

如果错误信息是指错误150,表创建失败,因为一个外键约束被不正确形成。

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

编辑:您还需要做出gnumber的关键在groups表这个工作。

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

我不知道你是否希望它是主键,你就必须玩的可用设置,但这个地方对我的作品,只要我可以创建表并执行插入。

+0

我这样做会创建'groups',但创建'users'时会出现同样的错误。 – user2973522

+0

@ user2973522你需要把'gnumber'作为一个键。我在答复中为此添加了一个示例。 –

+0

谢谢修复它! – user2973522

相关问题