-1
CREATE TABLE Child (
   chil_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
   child_fname VARCHAR(20) NOT NULL,
   child_sname VARCHAR(20) NOT NULL,
   child_dob DATE NOT NULL,
   child_gender ENUM('M','F') DEFAULT 'M',
   parent_id INT NOT NULL),
 CONSTRAINT FOREIGN KEY (parent_id) references Parent (parent_id) )
 ENGINE=InnoDB;

エラーメッセージ:

SQL 構文にエラーがあります。'CONSTRAINT FOREIGN KEY(parent_id) references Parent (parent_id) ) ENGINE=InnoDB at line 8 の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

1

問題は次の行にあります。

parent_id INT NOT NULL),

括弧は列/制約宣言を閉じますが、その後に制約を含めると、エラーがスローされます。その括弧を削除すると、設定する必要があります。正しいコードは次のようになります。

CREATE TABLE `Parent` (
  `parent_id` INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`parent_id`)
  ) Engine=InnoDB;

CREATE TABLE Child (
   chil_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
   child_fname VARCHAR(20) NOT NULL,
   child_sname VARCHAR(20) NOT NULL,
   child_dob DATE NOT NULL,
   child_gender ENUM('M','F') DEFAULT 'M',
   parent_id INT NOT NULL,
 CONSTRAINT FOREIGN KEY (parent_id) references Parent (parent_id) )
 ENGINE=InnoDB;

Parentの外部キー制約を満たすためにそこにテーブルが必要だったので、明らかにのテーブル構造を推測していますparent_idこれがfiddleで機能することを確認できます。

最後に、この回答の「このようなエラーを系統的に修正する方法に関するもう少し情報」というタイトルのセクションを実際に確認する必要があります。これにより、ステートメントのデバッグがはるかに簡単になるためです(以前CREATE TABLEに提案されているように)。

于 2012-07-26T13:23:20.883 に答える
-1

閉じ括弧が多すぎます。

行の最後の括弧

CONSTRAINT FOREIGN KEY (parent_id) references Parent (parent_id) )

余分です。削除して、もう一度やり直してください。

于 2012-07-12T02:28:10.673 に答える