MySQL插入时间戳值会导致命令失败

时间:2015-08-11 01:50:47

标签: mysql

我在插入时间戳字段时遇到问题。

这是我的架构:

CREATE TABLE `sponsorlog` (
  `updated` timestamp,
  `user` varchar(200) NOT NULL,
  `company` varchar(200) NOT NULL,
  `change` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这是insert命令:

insert into sponsorlog (user, company, change, updated) 
values ('attaskadmin@llts.com', '3M', 'Sponsor Jon Bove added', '2015-08-10 17:43:32');

错误是典型的无用的MySQL错误。它似乎指向日期/时间值,但我看不出它有什么问题。有什么想法吗?

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在“更改,更新”值附近使用的语法('attaskadmin@llts.com',   '3M','赞助商Jon Bove补充','在第1行

1 个答案:

答案 0 :(得分:2)

change是保留字,需要引用。在MySQL中,标识符引号字符是反引号:`

insert into sponsorlog (user, company, `change`, updated) 
values ('attaskadmin@llts.com', '3M', 'Sponsor Jon Bove added', '2015-08-10 17:43:32');

同样user是非保留关键字,因此为了保持一致,您可能希望对所有列使用引号。

  

如果标识符包含特殊字符或是保留字,   你引用它时必须引用它

Reference