2012-06-28 3 views
0

Это мой SQL ScriptMySQL Ошибка синтаксиса

CREATE TABLE account_profile 
(
accnt_id int NOT NULL , 
first_name varchar(255), 
last_name varchar(255), 
biography varchar(255), 
date_joined DATE, 
country varchar(255), 
gender varchar(255), 
screename varchar(255), 
path varchar(255), 
FOREIGN KEY (accnt_id) REFERENCES accounts(id) 
) 

он продолжал давать мне эту ошибку SQL запрос:

CREATE TABLE ac 

MySQL сказал:

#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 '' at line 1 

Что это конкретно означает ? что мне делать? с моей точки зрения сценарий вполне нормально, я просто не могу точно указать где же ошибка

+0

его рабочий для меня. –

+0

Ваш код правильный, может быть, ваша таблица 'accounts' не существует. –

+0

Вы запускаете этот код самостоятельно или с другими вещами (до этого)? Наверное, вы, вероятно, пропустили что-то в предыдущей строке, например ';' –

ответ

3

Убедитесь, что вы используете двигатель InnoDB. Другие двигатели не поддерживают внешние ключи.

CREATE TABLE account_profile 
(
... 
) ENGINE = INNODB; 

Также проверьте, если столбец account_profile.accnt_id соответствует типу данных accounts.id точно. Второй столбец должен иметь определенный на нем индекс (первичный ключ будет делать.)

+0

Это отмечено phpMyAdmin, если вы используете этот инструмент, он помогает запустить команду show errors: http: //dev.mysql.com/doc/refman/5.0/en/show-errors.html – mihaisimi

2

Возможно ваша таблица account не существует:

FOREIGN KEY (accnt_id) REFERENCES accounts(id) 

Вот почему вы получили ошибку, запрос в противном случае.

+0

Я проверил запрос, его работоспособность, и у меня также нет таблицы учетных записей. –

3

Я протестировал ваш запрос, и он работает со мной. У вас есть запрос перед созданием таблицы account_profile? потому что если вы это сделаете, попробуйте , чтобы проверить, был ли запрос до того, как был прерван точкой с запятой. как это:

Create table TableName 
(
    -- fields list 
); -- <== don't forget this before creating another table again. 

CREATE TABLE account_profile 
(
    accnt_id int NOT NULL , 
    first_name varchar(255), 
    last_name varchar(255), 
    biography varchar(255), 
    date_joined DATE, 
    country varchar(255), 
    gender varchar(255), 
    screename varchar(255), 
    path varchar(255), 
    FOREIGN KEY (accnt_id) REFERENCES accounts(id) 
); -- <== and also this. 

ошибка говорит вблизи линии 1.

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