mysql ON DUPLICATE KEY无法识别

时间:2016-05-09 14:39:53

标签: mysql phpmyadmin wampserver on-duplicate-key

此声明随机停止工作。我相信这是因为WAMP的新版本我正在使用4.5.2。

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已更改还是已弃用?

3 个答案:

答案 0 :(得分:2)

最后想出了这件事。

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

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

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

然后我删除了STRICT_ALL_TABLES,一切都开始像它应该的那样工作。

答案 1 :(得分:1)

这似乎是phpMyAdmin问题!

请参阅github errors that have been reported

看起来相当陈旧,但我看不到修复的提法,它仍然是OPEN

我们为一个名为Adminer, SourceForge download link here的类似工具提供了一个ADDON,因为人们对phpMyAdmin有一些奇怪的问题

下载该内容,它将直接安装到WAMPServer中,并显示在"您的别名"的WAMPServer主页上。菜单

答案 2 :(得分:0)

只需将您的查询重写为:

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