2016-04-15 14 views
0

私は現在データベースに関することを学んでいるので、私はW3SchoolsのPHPとSQLコースを経験しています。 、フォーラム、シンプルなもの。外部キーを作成するときにMariaDBが文法エラーを投げる

しかし、私は外部キーの問題に遭遇しました。私は外部キーと制約に関するMariaDBのドキュメントを読んできましたが、なぜこのエラーが出るのかわかりません。原因はおそらく、私はコードをあまりにも多く見たことがあり、今は私のエラーを見ることができなくなります。

私は次のエラー取得しています、私のXAMPP PHPMyAdminの上でSQLのこの部分を実行しているとき、だから今、私は、助けを求めています:私は、すぐそこに構文エラー厥

#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 

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; 

私はここのドキュメントから構造をコピーすることができたprety確信している:「エラーが発生し、私の完全なスクリプトは次のようになりますエリアコメントしまし私の知る限りではhttps://mariadb.com/kb/en/mariadb/foreign-keys/とし、私はtinyints、shortintsまたは定期的なintを使用している場合それは問題ありません。

私が提案された(この記事に関連する全ての質問を進めてきた、と私は同様の問題を持つ人に事前に

感謝を見つけるように見えるカント、私は完全に失われたよ、ここに私を助けてください。 。

答えて

0

Backticsは、いない引用符は、CONSTRAINT名前

+0

かなり確信して周り私はすでにことを試みたが、しようとするために、私は再び、私はまだ同じ場所で、同じエラーを取得しています試してみました。。:/ – jAndersen

+0

5.6で動作します –

+0

MariaDBとの相違はありません –

関連する問題