这段代码抛出了一个模式错误,但是它没有解释其中的原因。敬请指教!
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发布于 2019-03-25 07:12:06
更新:此响应在MS SQL数据库中是有效的建议,问题已被重新标记,因为它是MySQL。
语法正确,这里唯一的问题是对restaurantProfile的引用
restaurantProfile表是否存在,从表中选择应该验证这一点,如果您的CREATE table语句是较大批量语句的一部分,请确保首先创建了主表。SELECT * FROM restaurantProfile
restaurantProfile.restaurantID存在且TYPE为CHAR(15)在外键约束中,源列和目标列必须具有匹配的数据类型,并且在某些关系数据库中,关系的主体端需要定义为允许外键relationships.In 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‘和TABLE_NAME = 'restaurantProfile’
这应该返回如下所示的内容:
TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH NUMERIC_PRECISION- dbo restaurantProfile restaurantID char 15 NULL
https://stackoverflow.com/questions/55329330
复制相似问题