最初の2つのテーブルは正常に通過しますが、mysqlチェッカーが3番目のテーブルに到達するとすぐに、参照キーに問題があることが通知されます。ここで が私のコードです:私は取得していますプライマリキーを参照できないのはなぜですか?
CREATE TABLE USER(
Username VARCHAR(20) NOT NULL,
Email VARCHAR(50) NOT NULL,
Picture VARCHAR(30),
Points INT(5) DEFAULT 1 NOT NULL,
Password VARCHAR(50) NOT NULL,
Firstname VARCHAR(25) NOT NULL,
Lastname VARCHAR(25) NOT NULL,
PRIMARY KEY(Username)
);
CREATE TABLE THREAD (
ThreadID INT(9) NOT NULL AUTO_INCREMENT,
Title VARCHAR(255) NOT NULL,
PostID int(9) NOT NULL,
PRIMARY KEY (ThreadID)
);
CREATE TABLE POST(
ThreadID INT(9) NOT NULL,
PostID INT(9) NOT NULL AUTO_INCREMENT,
Content TEXT NOT NULL,
NumberOfLines INT(5) NOT NULL,
PRIMARY KEY(ThreadID, PostID),
FOREIGN KEY ThreadID(ThreadID) REFERENCES THREAD(ThreadID)
);
エラーは以下の通りです:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
PRIMARY KEY(ThreadID, PostID),
FOREIGN KEY fk_ThreadID(ThreadID) REFE' at line 6
私は別々のエンティティとしてPRIMARY KEY(ThreadID, PostID)
を作成しようとしたが、これは動作するようには思えません。 ありがとうございます。
の費用で追加の一意のキーを達成することができます私はあなたがFOREIGN KEYの部分でフロントOG parantesisでのThreadIDを設定すると思ういけません。 –
@MattiasÅslundできます。インデックスのオプションの名前です。 – Schwern
このエラーメッセージがそのコードに属していることを確認してください...? SQLfiddleでテストすると、別のものが得られます:_ "不正なテーブル定義です。自動列が1つしかなく、キーとして定義する必要があります "_ – CBroe