这段代码抛出了一个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

最佳答案

更新:此响应在MS SQL数据库中是有效的建议,该问题已被重新标记为MySQL。


语法正确,这里唯一的问题是对restaurantProfile的引用


检查restaurantProfile表是否存在
如果您的CREATE TABLE语句是一大批语句的一部分,则从表中立即选择应该进行验证,请确保首先创建主体表。

SELECT * FROM restaurantProfile

确认列restaurantProfile.restaurantID存在并且TYPECHAR(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

关于mysql - 创建表架构错误-不确定为什么会出现架构错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55329330/

10-13 08:40