2015-01-21 4 views
1

Попытка создать таблицу с двумя внешними ключами и продолжать получать эту ошибку:MySQL ошибка 1064 Создание таблицы

#1064 - 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 'idbed MEDIUMINT UNSIGNED NOT NULL, 
idnumber MEDIUMINT UNSIGNED NOT NULL,' at line 2 

Таблица является:

CREATE TABLE care(
idbed MEDIUMINT UNSIGNED NOT NULL, 
idnumber MEDIUMINT UNSIGNED NOT NULL, 
PRIMARY KEY(idbed, idnumber), 
FOREIGN KEY(idbed) REFERENCES intensivecarebed(idbed) 
FOREIGN KEY(idnumber) REFERENCES employee(idnumber)); 

остальные две таблицы:

CREATE TABLE Employee(
first_name VARCHAR(30) NOT NULL, 
last_name VARCHAR(30) NOT NULL, 
address VARCHAR(60) NOT NULL, 
salary FLOAT UNSIGNED NOT NULL, 
specialization VARCHAR(50) NOT NULL< 
clinic_name VARCHAR(50) NOT NULL, 
PRIMARY KEY(idnumber) 
); 

CREATE TABLE intensivecarebed(
idbed MEDIUMINT UNSIGNED NOT NULL, 
clinic_name VARCHAR(50) NOT NULL, 
tax_reg_number TINYINT(10) UNSIGNED NOT NULL, 
PRIMARY KEY(idbed) 
); 

Кто-нибудь знает?

+0

Ther некоторая ошибка синтаксиса в следующей строке: специализация VARCHAR (50) NOT NULL <<следует заменить «» в первом создании После исправления этой ошибки синтаксиса, т.е. выполнил этот sccript на моем сервере MySQL, он прошел нормально ... –

+0

'специализация VARCHAR (50) NOT NULL <' one '<', который должен быть ','. Вам не нужно 'idnumber MEDIUMINT UNSIGNED NOT NULL,' также в таблице Employee? –

ответ

2

Есть несколько ошибок в коде:

  • Вы пропустили idnumber в Employee таблице.
  • Вы пропустили кому между иностранными ключами.
  • Вы были < вместо ,

Вы также должны создать care таблицу после создания двух других таблиц, потому что вы имеете в виду эти таблицы.

Попробуйте это:

CREATE TABLE Employee(
    idnumber MEDIUMINT UNSIGNED NOT NULL, 
    first_name VARCHAR(30) NOT NULL, 
    last_name VARCHAR(30) NOT NULL, 
    address VARCHAR(60) NOT NULL, 
    salary FLOAT UNSIGNED NOT NULL, 
    specialization VARCHAR(50) NOT NULL, 
    clinic_name VARCHAR(50) NOT NULL, 
    PRIMARY KEY(idnumber) 
); 

CREATE TABLE intensivecarebed(
    idbed MEDIUMINT UNSIGNED NOT NULL, 
    clinic_name VARCHAR(50) NOT NULL, 
    tax_reg_number TINYINT(10) UNSIGNED NOT NULL, 
    PRIMARY KEY(idbed) 
); 

CREATE TABLE care(
    idbed MEDIUMINT UNSIGNED NOT NULL, 
    idnumber MEDIUMINT UNSIGNED NOT NULL, 
    PRIMARY KEY(idbed, idnumber), 
    FOREIGN KEY(idbed) REFERENCES intensivecarebed(idbed), 
    FOREIGN KEY(idnumber) REFERENCES employee(idnumber) 
); 
+2

Не могли бы вы ответить небольшим объяснением? – Martin

+0

@rtruszk Вы спасатель жизни –

Смежные вопросы