MySQL Workbench 6.3 中的奇怪语法错误

Weird syntax error in MySQL Workbench 6.3

我的代码如下:

CREATE DATABASE IF NOT EXISTS store;

CREATE TABLE IF NOT EXISTS customer (

customer_id INT UNSIGNED NOT NULL AUTO_INCREMENT,

first_name VARCHAR(20) NOT NULL,

middle_name VARCHAR(20),

last_name VARCHAR(40) NOT NULL,

email VARCHAR(60) NOT NULL,

usr_pword CHAR(10) NOT NULL,

reg_date DATE,

PRIMARY KEY (customer_id),

FOREIGN KEY (rental_id) REFERENCES (rental_id),

UNIQUE (email)

);

CREATE TABLE IF NOT EXISTS rental (

rental_id INT UNSIGNED NOT NULL AUTO_INCREMENT,

date_out DATE NOT NULL,

date_in DATE NOT NULL,

cost INTEGER NOT NULL,

PRIMARY KEY (rental_id),

FOREIGN KEY (customer_id) REFERENCES (customer_id),

FOREIGN KEY (game_id) REFERENCES (game_id)

);

CREATE TABLE IF NOT EXISTS game (

game_id INT UNSIGNED NOT NULL  AUTO_INCREMENT,

game_name VARCHAR(60),

game_publisher VARCHAR(20),

PRIMARY KEY (game_id),

FOREIGN KEY (rental_id) REFERENCES (rental_id)

);

我得到了错误: 错误代码 1064 您的 SQL 语法有误...在 'rental_id UNIQUE (email));'

附近

此行声明外键的语法无效:

FOREIGN KEY (rental_id) REFERENCES (rental_id),

您必须在任何外键定义中声明引用的 table。然后在 table 名称之后,在括号内的 table 中声明引用的列。示例:

FOREIGN KEY (rental_id) REFERENCES `ReferencedTable` (rental_id),

您应该学习阅读 SQL 语法文档,因为它包含了这个问题和其他问题的答案。例如,http://dev.mysql.com/doc/refman/5.7/en/create-table.html 显示外键引用的语法:

reference_definition:
    REFERENCES tbl_name (index_col_name,...)
      [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
      [ON DELETE reference_option]
      [ON UPDATE reference_option]

注意 tbl_name 如何跟在 REFERENCES 关键字之后,然后是带括号的列列表。

检查语法参考文档应该是您解决语法错误的第一种方法。