此声明随机停止工作。我相信这是因为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
已更改还是已弃用?
答案 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'