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
关键字之后,然后是带括号的列列表。
检查语法参考文档应该是您解决语法错误的第一种方法。
我的代码如下:
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
关键字之后,然后是带括号的列列表。
检查语法参考文档应该是您解决语法错误的第一种方法。