2012-07-18 18 views
0

mysql query - error: 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 'a', '1') ON DUPLICATE KEY UPDATE count=count+1' at line 1的MySQL 5.3 - 一些错误,但查询似乎确定

失败查询:

INSERT INTO tags (ip, tag, count) 
    VALUES ('xx.xx.xxx.xxx', 'krwiopijcy', '1') 
    ON DUPLICATE KEY UPDATE count=count+1; 

这有什么错我的查询?

+1

您已粘贴的查询错误信息不是m ATCH。在你的查询中没有“a”,“1”)。请发布未能执行的* exact *查询。 – cdhowie 2012-07-18 16:59:21

+2

错误说明与插入语句不匹配。你可以发布那个有'...'a','1')...'的查询吗? – 2012-07-18 17:00:16

+0

这很奇怪,因为这是错误的查询。等待一秒 – ElSajko 2012-07-18 17:06:44

回答

0

count是内置函数,因此,may require care to be used as such。但是,正如文档所说,列名是完全正确的。您可能需要使用

`count` 

逃脱它虽这么说,我已经使用这个表结构中的确切查询(不逃逸)没有问题:

CREATE TABLE `tags` (
    `ip` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `tag` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `count` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`ip`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

从评论你的示例中有一个撇号太多(在'umacku'后面),这似乎不是问题(因为它没有在错误信息中给出),但您应该粘贴确切的查询:

INSERT INTO tags (ip, tag, count) 
    VALUES ('xx.xx.xxx.xxx', 'umacku'', '1') 
    ON DUPLICATE KEY UPDATE count=count+1; 
+0

是的,非常感谢!嗯,我使用node.js和扩展名的MySQL,并有逃逸功能,但我看到它不工作,因为这个撇号 – ElSajko 2012-07-18 17:20:47

+0

@Kamil不是我的业务,​​但...沃尔福姆提供了一个高质量的答案,你谢谢他,但你不会提高回答率,也不会接受他的回答。有什么理由呢? – 2012-07-18 17:43:08

相关问题