2013-04-14 3 views
0

Я стараюсь следовать простому уроку в веб-туристе. Я попытался изменить код, указанный для моих нужд. И это возвращает ошибку с модификацией:MYSQL [модификация USER TABLE приносит ошибки]

# 1064 - У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' id '), UNIQUE KEY (' email '), KEY (' email ',' pass ')) ENGINE = MYISAM DEFAULT' в строке 13

ORIG КОД:

CREATE TABLE `users` ( 
`id` int(11) NOT NULL auto_increment, 
`username` varchar(30) NOT NULL default '', 
`password` varchar(255) NOT NULL default '', 
`email` varchar(40) NOT NULL default '', 
`msn` varchar(250) NOT NULL default 'Not Specified', 
`aim` varchar(250) NOT NULL default 'Not Specified', 
`location` varchar(36) NOT NULL default 'Not Specified', 
PRIMARY KEY (`id`) 
) TYPE=MyISAM; 

МОЯ EDIT:

CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
type ENUM('member' , 'admin') NOT NULL , 
`username` varchar(30) NOT NULL default '', 
`password` varchar(255) NOT NULL default '', 
`first_name` varchar (15) NOT NULL, 
`last_name` varchar (30) NOT NULL, 
`gender` ENUM('male', 'female') NOT NULL default 'male', 
`email` varchar(50) NOT NULL default '', 
`skype` varchar(50) NOT NULL default 'Not Specified', 
`facebook` varchar(150) NOT NULL default 'Not Specified', 
`location` varchar(100) NOT NULL default 'Not Specified', 
PRIMARY KEY ('id'), 
UNIQUE KEY ('email'), 
KEY ('email', 'pass') 
) ENGINE = MYISAM DEFAULT CHARSET = utf8; 

ответ

1

Вы сошли с ума с кавычку

default '', 

Две одинарные кавычки - это пустая строка BackTicks для имен столбцов и т. Д.

My Strange column name

+0

Отредактировано. Пожалуйста, проверьте описание снова! –

+0

Итак, вы исправили обратные грани вокруг значений по умолчанию, но теперь у вас есть одинарные кавычки вокруг имен полей, это ваши ключи, как указано в @Perception. Строки - одинарные кавычки, объекты (столбцы, таблицы и т. Д.) - обратные. –

+0

Это исправлено TY !!! –

2

Вы путаете обратные тиков и цитаты. Это общее правило для жизни: back-ticks используются для прикрытия структуры таблицы (имена таблиц, столбцов таблицы, имена ограничений и т. Д.). Котировочные знаки используются для включения строки значения - ака, фактические данные, которые вводятся в таблицу. Вы не будете использовать кавычки в инструкции DDL, если вы не указали значение по умолчанию значения.

Ваша ошибка указана в первичных, уникальных и индексных ключах в вашем заявлении.

PRIMARY KEY ('id'), 
UNIQUE KEY ('email'), 
KEY ('email', 'pass') 

Должен быть (обратите внимание на обратные тики):

PRIMARY KEY (`id`), 
UNIQUE KEY (`email`), 
KEY (`email`, `password`) 

Заметит также, что ваш индекс ссылается на несуществующие колонки pass - я изменил его на правильный столбец password.