此代码引发SCHEMA ERROR,但是它为什么没有意义。请指教!
CREATE TABLE restaurantProfile (
restaurantID CHAR(15),
name VARCHAR(30),
cuisineType VARCHAR(30),
address VARCHAR(30),
description VARCHAR(500),
phone varchar(10),
PRIMARY KEY (restaurantID)
);
CREATE TABLE menu (
menuID CHAR(15),
dateStart date,
restaurantID CHAR(15),
PRIMARY KEY (menuID),
FOREIGN KEY (restaurantID) REFERENCES restaurantProfile(restaurantID)
);
Error thrown:
Schema Error: Error: ER_PARSE_ERROR: 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 'CREATE TABLE menu ( menuID VARCHAR(15), dateStart date, restaurantID CHAR(' at line 10
答案 0 :(得分:0)
更新:此响应在MS SQL数据库中是有效的建议,该问题由于是MySQL而已被重新标记。
语法正确,这里唯一的问题是对restaurantProfile
检查restaurantProfile
表是否存在
如果您的CREATE TABLE语句是一大批语句的一部分,那么从表中立即选择应该进行验证,请确保首先创建主体表。
SELECT * FROM restaurantProfile
确认列restaurantProfile.restaurantID
存在并且TYPE
是CHAR(15)
在外键约束中,源列和目标列必须具有匹配的数据类型,并且在某些RDBMS中,关系的主要端需要定义为允许外键关系。
在MS SQL Sever中,我们可以运行以下查询来检查列信息:
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'restaurantID'
AND TABLE_NAME = 'restaurantProfile'
这应该返回如下内容:
TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH NUMERIC_PRECISION
-------------- ------------------- -------------- ----------- -------------------------- -------------------
dbo restaurantProfile restaurantID char 15 NULL