问题描述
我尝试执行以下查询:
SET DATABASE sql Syntax MYS TRUE;
然后:
INSERT INTO mytable (id,age) VALUES (1,1)
ON DUPLICATE KEY UPDATE id=2,age=33;
我收到错误消息:
INSERT INTO mytable (id,1)
ON DUPLICATE KEY
[2020-10-23 11:09:42] [42590][-5590] unexpected end of statement: required: UPDATE : line: 2
我怎么了?
解决方法
OP在评论中对此进行报告:
PUBLIC.PUBLIC> SET DATABASE SQL SYNTAX MYS TRUE [2020-10-23 11:23:14] completed in 4 ms
PUBLIC.PUBLIC> INSERT INTO tblUserMetadata (userMetadataId,portalId) VALUES (1,1) ON DUPLICATE KEY [2020-10-23 11:23:14] [42590][-5590] unexpected end of statement: required: UPDATE : line: 2
这些行显示正在使用SQL客户端运行脚本。 SQL客户端会预先准备该语句,并认为该语句在关键字KEY
之后结束,而关键字UPDATE
是新语句的开始。因此,它尝试将不完整的SQL查询发送到数据库引擎。
MySQL语法正在运行,因为该命令已被接受并执行。
您可以通过从系统表中进行选择来检查属性设置:
SELECT * FROM information_schema.system_properties
设置了MySQL兼容模式后,以下语句返回true
:
SELECT property_value FROM information_schema.system_properties
WHERE property_name = 'sql.syntax_mys'