2015-05-02 156 views
3

查询:MySQL表创建错误#1005

CREATE TABLE location_share (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    user_id INT , 
    circle_id INT , 
    location_sharing_id INT ,  
    CONSTRAINT fkuser1 FOREIGN KEY (user_id) 
     REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,  
    CONSTRAINT fkcircle1 FOREIGN KEY (circle_id) 
     REFERENCES circle(id) ON DELETE CASCADE ON UPDATE CASCADE,  
    CONSTRAINT fksharing_policy FOREIGN KEY (location_sharing_id) 
     REFERENCES share(id) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE = INNODB ; 

错误消息:

错误:#1005 - 无法创建表'.\phonetracker\location_share.frm'(错误:150)

其他表格:

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    contact_no VARCHAR(25) UNIQUE NOT NULL, 
    email VARCHAR(50) UNIQUE NOT NULL, 
    first_name VARCHAR(25) NOT NULL , 
    last_name VARCHAR(25) , 
    device_id VARCHAR(250)NOT NULL , 
    image_path VARCHAR(180) , 
    password VARCHAR(30) NOT NULL , 
    latitude VARCHAR(18) , 
    longitude VARCHAR(18) 
) ENGINE=INNODB 

CREATE TABLE circle (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    name varchar(35) 
) ENGINE=INNODB 

CREATE TABLE share (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    policy VARCHAR(6) UNIQUE NOT NULL 
) 
+0

从[mysql.com](http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html),“表创建失败,因为外键约束是没有正确组成“。建议使用缩进将此查询格式化为多行,以使其更容易理解。提示:在堆栈溢出问题中,如果你用**四个空格开始每一行**,它将把它格式化为代码,而不是对话文本。 –

+1

你会告诉我,我在外键约束中做了什么错?谢谢 –

+0

我不喜欢那部分'(user_id)REFERENCES'。尝试一个空格:'(user_id)REFERENCES' –

回答

1

http://sqlfiddle.com/#!9/c3d04/1

您的查询没有问题,只需要订购,如果您使用FOREIGN KEY父表必须首先声明。

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    contact_no VARCHAR(25) UNIQUE NOT NULL, 
    email VARCHAR(50) UNIQUE NOT NULL, 
    first_name VARCHAR(25) NOT NULL , 
    last_name VARCHAR(25) , 
    device_id VARCHAR(250)NOT NULL , 
    image_path VARCHAR(180) , 
    password VARCHAR(30) NOT NULL , 
    latitude VARCHAR(18) , 
    longitude VARCHAR(18) 
) ENGINE=INNODB; 

CREATE TABLE circle (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    name varchar(35) 
) ENGINE=INNODB; 

CREATE TABLE share (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    policy VARCHAR(6) UNIQUE NOT NULL 
); 

CREATE TABLE location_share (
    id INT AUTO_INCREMENT PRIMARY KEY , 
    user_id INT , 
    circle_id INT , 
    location_sharing_id INT ,  
    CONSTRAINT fkuser1 FOREIGN KEY (user_id) 
     REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,  
    CONSTRAINT fkcircle1 FOREIGN KEY (circle_id) 
     REFERENCES circle(id) ON DELETE CASCADE ON UPDATE CASCADE,  
    CONSTRAINT fksharing_policy FOREIGN KEY (location_sharing_id) 
     REFERENCES share(id) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE = INNODB ; 
+0

我已经订购了所有的表格......但仍然无法使用 –

相关问题