2016-08-01 167 views
1

我相信这个问题已经被问了很多次了。 如果有人可以看看它会很棒似乎无法调试MySQL错误“#1064

我得到#1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在正确的语法中使用 'REFERENCES interests(interests_id)'''),同时使用interests.interest_id创建category_interests和event_attendees表作为定义外键的参考。

我似乎无法找到它的原因。

SET foreign_key_checks = 0; 

DROP table IF EXISTS categories; 
CREATE table categories(
    category_id int AUTO_INCREMENT, 
    category_name VARCHAR(40), 
    category_desc TEXT, 
    CONSTRAINT pk_categories PRIMARY KEY (category_id) 
); 

DROP table IF EXISTS interests; 
CREATE table interests(
    interest_id int AUTO_INCREMENT, 
    interest_name varchar(40), 

    CONSTRAINT pk_interests PRIMARY KEY (interest_id) 
); 


-- ERROR - query does not run 
DROP table IF EXISTS category_interests; 
CREATE table category_interests(
    interest_id int, 
    category_id int, 
    CONSTRAINT fk_interests FOREIGN KEY interest_id REFERENCES interests(interest_id), 
    CONSTRAINT fk_categories FOREIGN KEY category_id REFERENCES categories(category_id) 
); 

-- ERROR - query does not run 
DROP table IF EXISTS event_atendees; 
CREATE table event_atendees(
    attendee_id int AUTO_INCREMENT, 
    interest_id int, 
    lat double, 
    lon double, 
    name varchar(115), 
    dob date, 
    gender CHAR(1), 

    CONSTRAINT pk_event_atendees PRIMARY KEY (attendee_id), 
    CONSTRAINT fk_intrests_ea FOREIGN KEY interests_id REFERENCES `interests`(interests_id) 
); 

SET foreign_key_checks = 1; 

回答

0

的错误,我发现:

  1. 你忘了通过()围住外键列。它应该是 CONSTRAINT fk_interests FOREIGN KEY (interest_id) REFERENCES interests(interest_id)。它不应该是CONSTRAINT fk_interests FOREIGN KEY interest_id....(不带圆括号)
  2. 某处您使用了interests_id。但你应该使用 interest_id

试试这个:

SET foreign_key_checks = 0; 

DROP table IF EXISTS categories; 
CREATE table categories(
    category_id int AUTO_INCREMENT, 
    category_name VARCHAR(40), 
    category_desc TEXT, 
    CONSTRAINT pk_categories PRIMARY KEY (category_id) 
); 

DROP table IF EXISTS interests; 
CREATE table interests(
    interest_id int AUTO_INCREMENT, 
    interest_name varchar(40), 

    CONSTRAINT pk_interests PRIMARY KEY (interest_id) 
); 


-- ERROR - query does not run 
DROP table IF EXISTS category_interests; 
CREATE table category_interests(
    interest_id int, 
    category_id int, 
    CONSTRAINT fk_interests FOREIGN KEY (interest_id) REFERENCES interests(interest_id), 
    CONSTRAINT fk_categories FOREIGN KEY (category_id) REFERENCES categories(category_id) 
); 

-- ERROR - query does not run 
DROP table IF EXISTS event_atendees; 
CREATE table event_atendees(
    attendee_id int AUTO_INCREMENT, 
    interest_id int, 
    lat double, 
    lon double, 
    name varchar(115), 
    dob date, 
    gender CHAR(1), 

    CONSTRAINT pk_event_atendees PRIMARY KEY (attendee_id), 
    CONSTRAINT fk_intrests_ea FOREIGN KEY (interest_id) REFERENCES `interests`(interest_id) 
); 

SET foreign_key_checks = 1; 

WORKING DEMO

+0

我已经提到我所做的更改。这是您的模式的工作演示。 http://sqlfiddle.com/#!9/d6c965/2/0。 @NishonTandukar – 1000111

+0

我修复了已识别的错误 现在我得到了#1215 - 无法添加外键约束' 而我尝试创建** event_atendess **表 –

+0

它不是应该是'event_atendees'吗?请检查工作演示。它成功执行所有查询。 – 1000111