2012-03-24 1 views
2

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

ОШИБКА 1064 в строке 3: У вас есть ошибка в синтаксисе SQL; проверить руководство, которое соответствует Вашей версии сервера MySQL для правого синтаксиса использовать вблизи 'FOREIGN KEY (courses_courseDepartmentAbbv)) на линии 8

DROP TABLE IF EXISTS courses; 

CREATE TABLE courses(
    courses_courseNumber INT NOT NULL AUTO_INCREMENT, 
    courses_courseTitle VARCHAR(25) NOT NULL, 
    courses_courseTeacher VARCHAR(30) NOT NULL, 
    courses_courseCostOfBooks DECIMAL(5,2) NOT NULL, 
    courses_courseDepartmentAbbv CHAR(4) NOT NULL, 
    PRIMARY KEY (courses_courseNumber), 
    FOREIGN KEY (courses_courseTeacher), 
    FOREIGN KEY (courses_courseDepartmentAbbv) 
); 

DROP TABLE IF EXISTS departments; 

CREATE TABLE departments(
    departments_departmentAbbv CHAR(4) NOT NULL, 
    departments_departmentFullName VARCHAR(15) NOT NULL, 
    PRIMARY KEY (departments_departmentAbbv), 
    FOREIGN KEY (departments_departmentAbbv) REFERENCES (courses_courseDepartmentAbbv) 
); 

DROP TABLE IF EXISTS teachers; 

CREATE TABLE teachers(
      teachers_teacherName VARCHAR(20) NOT NULL, 
    teachers_teacherHomeroom SMALLINT(3) NOT NULL, 
    teachers_teacherHomeroomGrade SMALLINT(1) NOT NULL, 
    teachers_teacherFullTime BOOL NOT NULL, 
    PRIMARY KEY (teachers_teacherName), 
    FOREIGN KEY (teachers_teacherName) REFERENCES (courses_courseTeacher) 
); 

ответ

2

Вы должны иметь Ссылки после каждого внешнего ключа , Вам не хватает этого в начале настройки курсов. Вот documentation

Я думаю, что это больше того, чего вы хотите. Ваш порядок творения был неправильным. Из-за этого у вас были внешние ключи в неправильном месте. Вы только настраивали сопоставления внешних ключей в таблицах с отношениями к ПК. Вам нужно только настроить ПК на других таблицах. Пока вы создаете таблицы в правильном порядке, вы можете сделать это, как показано ниже.

Таким образом, teachers и departments имеют первичные ключи, которые являются внешними ключами в таблице courses. teachers и departments не нужно беспокоиться о внешнем ключе. Выходите, что к столу, что на самом деле имеет ссылку (courses)

DROP TABLE IF EXISTS teachers; 

CREATE TABLE teachers(
      teachers_teacherName VARCHAR(20) NOT NULL, 
    teachers_teacherHomeroom SMALLINT(3) NOT NULL, 
    teachers_teacherHomeroomGrade SMALLINT(1) NOT NULL, 
    teachers_teacherFullTime BOOL NOT NULL, 
    PRIMARY KEY (teachers_teacherName) 
    --FOREIGN KEY (teachers_teacherName) REFERENCES courses (courses_courseTeacher) 
    --This is not where you set up the FK for courses 
); 

DROP TABLE IF EXISTS departments; 

CREATE TABLE departments(
    departments_departmentAbbv CHAR(4) NOT NULL, 
    departments_departmentFullName VARCHAR(15) NOT NULL, 
    PRIMARY KEY (departments_departmentAbbv) 
    --FOREIGN KEY (departments_departmentAbbv) REFERENCES courses (courses_courseDepartmentAbbv) 
    --This is not where you set up the FK for courses 
); 

CREATE TABLE courses(
    courses_courseNumber INT NOT NULL AUTO_INCREMENT, 
    courses_courseTitle VARCHAR(25) NOT NULL, 
    courses_courseTeacher VARCHAR(30) NOT NULL, 
    courses_courseCostOfBooks DECIMAL(5,2) NOT NULL, 
    courses_courseDepartmentAbbv CHAR(4) NOT NULL, 
    PRIMARY KEY (courses_courseNumber), 
    FOREIGN KEY (courses_courseTeacher) 
     REFERENCES teachers (teachers_teacherName) 
    FOREIGN KEY (courses_courseDepartmentAbbv) 
     REFERENCES departments(departments_departmentAbbv) 
); 
+0

пытался что, по-прежнему дает мне ту же ошибку, хотя – user1086348

+0

@ user1086348 Я обновил свой ответ с кодом, который должен быть использовались в качестве ссылок. –

+0

удивительный я понимаю, начинающий здесь, спасибо – user1086348

0

Определить тип двигателя, который должен быть innodb который поддерживает FOREIGN KEY ограничения.

Follow Syntax defined here

0

Вы должны дать реляционные для FOREIGN KEY статей

FOREIGN KEY (courses_courseTeacher) 
FOREIGN KEY (courses_courseDepartmentAbbv)