2016-08-01 4 views
1

Ich bin mir sicher, dass diese Frage zu oft gestellt wurde. Wenn jemand es ein Blick groß sein würde, geben könnteKann nicht in der Lage sein, MySQL-Fehler zu debuggen "# 1064

ich # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, für die korrekte Syntax in der Nähe von "REFERENCES interests (interests_id)" beim Erstellen der Tabelle category_interests und event_attendees mit interests.interest_id als Referenz zum Definieren von Fremdschlüsseln.

Ich kann nicht scheinen, einen Grund dafür herauszufinden.

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; 

Antwort

0

Die Fehler habe ich gefunden:

  1. Sie haben vergessen, die Fremdschlüsselspalte von () einzuschließen. Es sollte CONSTRAINT fk_interests FOREIGN KEY (interest_id) REFERENCES interests(interest_id) sein. Es sollte nicht CONSTRAINT fk_interests FOREIGN KEY interest_id.... (ohne Klammern) sein
  2. Irgendwo haben Sie interests_id verwendet. Aber Sie sollten interest_id verwendet haben.

Versuchen Sie folgendes:

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

Ich habe bereits die Änderungen erwähnt ich gemacht. Hier ist eine funktionierende Demo Ihres Schemas. http://sqlfiddle.com/#!9/d6c965/2/0. @NishonTandukar – 1000111

+0

Ich habe die Fehler behoben, die identifiziert wurden jetzt bekomme ich '# 1215 - Kann nicht hinzufügen Fremdschlüssel Constraint' während ich versuche, ** event_atendess ** Tabelle –

+0

zu erstellen Ist es nicht angeblich 'event_atedees'? Bitte überprüfen Sie die Arbeitsdemo. Es führt alle Abfragen erfolgreich aus. – 1000111

Verwandte Themen