2010-05-02 4 views
0

У меня есть эта часть SQL, которая подается в Mysql.Ошибка синтаксиса mysql для timestamp

CREATE TABLE pn_history(
member INT, 
action INT, 
with INT, 
timestamp DATETIME, 
details VARCHAR(256) 
) 

Но возвращается как ошибка о синтаксисе.

#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 'with INT, 
timestamp DATETIME, 
details VARCHAR(256) 
)' at line 4 

Почему это не удается?

ответ

0

Проблема заключается в названии столбца with. Измените имя на что-то вроде withValue.

CREATE TABLE pn_history(
member INT, 
action INT, 
withValue INT, 
timestamp DATETIME, 
details VARCHAR(256) 
) 
0

timestamp - это ключевое слово (это тип данных в mysql), который может вызвать проблемы.

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

2

Оба типа «с» и «метка времени» - это reserved words в MySQL. Таким образом, чтобы получить эту работу, вам нужно бежать каждый один:

CREATE TABLE pn_history(
member INT, 
action INT, 
`with` INT, 
`timestamp` DATETIME, 
details VARCHAR(256) 
) 

Действительно, хотя, вы должны рассмотреть вопрос об изменении названия ваших колонок identifiers.

Подробнее о MySQL Reserved Words.

EDIT: На самом деле, TIMESTAMP не является зарезервированным словом. В документации сказано:

MySQL позволяет несколько ключевых слов, которые будут использоваться в качестве некотируемые идентификаторы, потому что многие люди ранее использовали их. Примерами являются те, в следующем списке:

  • ACTION
  • BIT
  • DATE
  • ENUM
  • NO
  • TEXT
  • `TIME
  • TIMESTAMP

Так что я думаю, это означает, что давление со стороны сверстников взяло TIMESTAMP от зарезервированного списка слов. Хах!

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