не создается таблица в mysql, если название поля separator

Статус
В этой теме нельзя размещать новые ответы.

vilk108

Профессор
Регистрация
17 Дек 2007
Сообщения
174
Реакции
39
Создаю таблицу
Код:
 CREATE TABLE IF NOT EXISTS  'test'(
 id int(10) PRIMARY KEY NOT NULL auto_increment,
 separator varchar(255),
 text varchar(255)
)
Из за того что поле называется separator, то таблица не создается. Почему нельзя использовать имя separator в названиях полей?
 
Т.к. это зарезервированное слово синтаксиса MySQL. Используется в некоторых операторах языка, например в GROUP_CONCAT.
 
мне еще сказали что если слово separator поставить между обратными косыми кавычками так - `separator`, то ошибки не будет и поле создастся.
 
меня не обманули. Просто с обратными кавычками будет работать если в название таблицы убрать кавычки.
Так правильно:
Код:
  CREATE TABLE IF NOT EXISTS  test(
 id int(10) PRIMARY KEY NOT NULL auto_increment,
 `separator` varchar(255),
 text varchar(255)
)
 
Вот так более правильно будет:

Код:
CREATE TABLE IF NOT EXISTS  `test`(
   `id` int(10) PRIMARY KEY NOT NULL auto_increment,
   `separator` varchar(255),
   `text` varchar(255)
)
 
лучше всеже воздержатся от подобной практики
SELECT * FROM test WHERE ... GROUP ...
прийдется или опять применять обратные кавычки с алиасами.
хорошая практика это давать названия полям применяя имя таблицы
к примеру test_separator в будущем очень поможет при анализе или модернизации
к примеру WHERE `foo_id`=`bar_pid` ясно говорит из каких таблиц, если запрос большой.
ну а обратные кавычки стоит применять всегда
 
Мне кажутся такие конструкции избыточными, поскольку в таком виде запрос у тебя перед глазами и видно откуда "растут ноги" :)
 
потом с ростом совершенства такие конструкции позволяют строить абстракции
к примеру
$mysql->query(array('foo_id'=>'bar_pid' ))
абстракция может построить сама запрос
 
Столкнулся с подобной проблемой
Скрытое содержимое доступно для зарегистрированных пользователей!


Подскажите в чем трабла?:nezn:
 
запрос верный, кривизна в каком-то символе, возм. перенос
копирнул в блокнот, вытянул запрос в одну строку - работает
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху