创建表架构错误-不确定为什么会出现架构错误

时间:2019-03-24 22:49:26

标签: mysql sql reference create-table

此代码引发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

1 个答案:

答案 0 :(得分:0)

  

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

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

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

    SELECT * FROM restaurantProfile
    
  2. 确认列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