HSQLDB ON DUPLICATE KEY UPDATE语法错误



我尝试执行以下查询:

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, age) VALUES (1, 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' 

最新更新