Ошибка создания схемы таблицы - неизвестно, почему возникает ошибка схемы - PullRequest
0 голосов
/ 25 марта 2019

Этот код выдает ошибку SCHEMA, но не имеет смысла объяснять, почему. Просьба посоветовать!

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 голосов
/ 25 марта 2019

ОБНОВЛЕНИЕ: этот ответ является действительным советом в базах данных MS SQL, вопрос был помечен как MySQL.

Синтаксис правильный, единственной проблемой здесь являетсяссылка на restaurantProfile

  1. Убедитесь, что таблица restaurantProfile существует. Простой выбор из таблицы должен убедиться в этом, если ваш оператор CREATE TABLE является частью большего пакета операторов, сделайтеубедитесь, что главная таблица создана первой.

    SELECT * FROM restaurantProfile
    
  2. Убедитесь, что столбец restaurantProfile.restaurantID существует, а TYPE равен CHAR(15)
    В ограничениях внешнего ключаисходный и целевой столбцы должны иметь совпадающие типы данных, и в некоторых РСУБД основной конец отношения должен быть определен как разрешающий отношения внешнего ключа.

    В 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
    
...