2016-05-09 24 views
0

该语句随机停止工作。我相信这是因为我使用4.5.2的新版WAMP。mysql在DUPLICATE KEY不识别

INSERT INTO at_user_listing_settings (userID, rfID, userID_rfID, Watching) VALUES(177, 35888, '177_35888', '1') ON DUPLICATE KEY UPDATE Watching='1' 

我得到这个错误:

Unrecognized keyword. (near "ON" at position 138) 
Unrecognized keyword. (near "DUPLICATE" at position 141) 
Unrecognized keyword. (near "KEY" at position 151) 

我不能似乎发现了什么不对的语法,为ON DUPLICATE KEY更改或弃用?

+0

你正在使用'4.5.2' **什么**? – RiggsFolly

+0

你在这个确切的查询**上得到这个错误**? – RiggsFolly

+0

显示为以下输出:SELECT version(); –

回答

0

查询简单地重写本:

INSERT INTO at_user_listing_settings 
SET 
    userID = 177, 
    rfID = 35888, 
    userID_rfID = '177_35888', 
    Watching = '1' 
ON DUPLICATE KEY UPDATE 
    Watching = '1' 
+0

只是出于兴趣....这是怎么回事 – RiggsFolly

+0

不客气。 – Legionar

+0

我尝试了上面的说法,但仍然得到类似的错误,它也在说另一列的内容。 '注意'也许是造成这个问题的原因? 错误:无法识别的关键字。(位置151附近“开”) 无法识别的关键字。 (在位置154的“重复”附近) 无法识别的关键字。 (在位置164的“KEY”附近) 以前发现别名。 (在位置189的“1”附近) #1364 - 字段'注释'没有默认值 我想知道如果最后的错误部分可能与它有关... –

1

这似乎是一个phpMyAdmin问题!

github errors that have been reported

它看起来相当老了,但我看不出有任何引用到一个解决方法,它仍然是开放的

我们为所谓Adminer, SourceForge download link here人们一个类似的工具提供了一个插件是具有几奇与phpMyAdmin

问题是下载,它会在“您的别名”菜单

+0

我给你+1至少知道这是一个phpmyadmin问题,而不是代码问题。虽然技术上它是一个MySQL设置。 –

2

终于想通这件事了安装直入WAMPServer并显示在WAMPServer主页。

当您下载WAMP的新版本时,它默认将mysql设置为“Strict”模式。由hostgator托管的真正的服务器必须有更宽松的限制。当试图在本地运行代码时,代码是正确的,但是在尝试更新或插入数据库(也是本地)时,sql语句遇到了问题。

例如,严格模式要求具有布尔值的列具有默认值。如果任何列没有默认值,则尝试插入时会失败。最糟糕的部分是它不会返回apache或php错误,所以它使调试非常困难。它也不喜欢“ON DUPLICATE KEY”。

为了解决这个问题,我进入了WAMP> MySQL> my.ini>并寻找sql-mode="STRICT_ALL_TABLES"

然后我删除了STRICT_ALL_TABLES,并且一切都开始按照它应该的方式工作。