2016-04-15 7 views
0

Ich versuche derzeit, ein oder zwei Dinge über Datenbanken zu lernen, also habe ich durch W3Schools PHP und SQL-Kurs, und ich habe jetzt meine eigene kleine Anwendung erstellt ein Forum, ein einfaches.MariaDB wirft Syntaxfehler beim Erstellen von Fremdschlüssel

Allerdings habe ich ein Problem mit Fremdschlüsseln gerannt. Ich habe die Dokumentation von MariaDB über Fremdschlüssel und Einschränkungen durchgesehen, und ich kann einfach nicht sagen, warum ich diesen Fehler habe. Die Ursache ist wahrscheinlich, dass ich zu viel auf den Code gestarrt habe, und jetzt kann ich meine Fehler nicht mehr sehen.

So jetzt ich Hilfe bin gefragt, wenn ich dieses Stück SQL renne auf meinem XAMPP PHPMyAdmin, ich bin die folgende Fehlermeldung erhalten:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''fk_topics_to_titles' 
    FOREIGN KEY (titleID) REFERENCES titles(id) 
' at line 8 

Das ist ein Syntaxfehler genau dort, i habe den Bereich kommentiert, wo der Fehler auftritt, und mein ganzes Skript sieht wie folgt aus:

DROP DATABASE IF EXISTS eForum; 

CREATE DATABASE eForum; 

CREATE TABLE IF NOT EXISTS eForum.titles(
    id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    titleName varchar(50) NOT NULL, 
    creator varchar(100) NOT NULL, 
    createDate TIMESTAMP, 
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
)ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS eForum.topics(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, 
    topicName VARCHAR(50) NOT NULL, 
    creator VARCHAR(100) NOT NULL, 
    createDate TIMESTAMP, 
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    titleID INT UNSIGNED NOT NULL, /*after this is where the error occurs*/ 
    CONSTRAINT 'fk_topics_to_titles' 
     FOREIGN KEY (titleID) REFERENCES titles(id) 
     ON DELETE CASCADE 
     ON UPDATE RESTRICT 
)ENGINE = InnoDB; 


CREATE TABLE IF NOT EXISTS eForum.threads(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, 
    threadName VARCHAR(50) NOT NULL, 
    threadText TEXT NOT NULL, 
    threadImage VARCHAR(100) NOT NULL DEFAULT 'sloth', 
    creator VARCHAR(100) NOT NULL, 
    creatorCorp VARCHAR(10) NOT NULL DEFAULT 'Pikachu', 
    createDate TIMESTAMP, 
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    topicID INT UNSIGNED NOT NULL, 
    CONSTRAINT 'fk_threads_to_topics' 
     FOREIGN KEY (topicID) REFERENCES topics(id) 
     ON DELETE CASCADE 
     ON UPDATE RESTRICT 
) ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS eForum.posts(
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, 
    postName VARCHAR(50) NOT NULL, 
    postText TEXT NOT NULL, 
    postCreator varchar(40) NOT NULL, 
    postCorp varchar(30) NOT NULL DEFAULT 'get in corp', 
    createDate TIMESTAMP, 
    lastUpdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    threadID INT UNSIGNED NOT NULL, 
    CONSTRAINT 'fk_posts_to_threads' 
     FOREIGN KEY (threadID) REFERENCES threads(id) 
     ON DELETE CASCADE 
     ON UPDATE RESTRICT 
)ENGINE = InnoDB; 

ich bin prety sicher, dass ich es geschafft haben, hier die Struktur der Dokumentation zu kopieren: https://mariadb.com/kb/en/mariadb/foreign-keys/ und soweit ich weiß, Es ist egal, ob ich Tinyints, Shortcuts oder normale Ints verwende.

Bitte helfen Sie mir hier raus, ich bin völlig verloren, ich habe zu diesem Beitrag durch alle damit verbundenen Fragen gewesen (die vorgeschlagen wurden, und ich kann nicht scheinen, jemand mit einem ähnlichen Problem

Vielen Dank im Voraus zu finden .

Antwort

0

Backtics, nicht zitiert, um den CONSTRAINT Name

+0

ziemlich sicher, ich habe bereits versucht, das, aber aus Gründen der Versuch, ich versuchte es noch einmal bin ich immer noch die gleichen Fehler, an der gleichen Stelle..:/ – jAndersen

+0

Funktioniert für mich in 5.6. –

+0

Ich sehe keine Unterschiede mit MariaDB. –

Verwandte Themen