Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax error, expect RPAREN, actual IDENTIFIER pos 172, line 2, column 99, token IDENTIFIER INTEGER : SELECT t1.dateTime as table_k,IFNULL(t2.count,0) as table_v FROM (
SELECT RIGHT ( date_add( DATE_SUB(?, INTERVAL 1 DAY ), INTERVAL ( cast( help_topic_id AS signed INTEGER ) + 1 ) DAY ), 5 ) dateTime
FROM mysql.help_topic WHERE help_topic_id < DATEDIFF(?,date_sub( ?, INTERVAL 1 DAY ))
) t1
LEFT JOIN (
SELECT date_format(td.create_time, '%m-%d') AS month, count(*) as count
FROM sys_user as td
WHERE td.user_identity = ? AND td.`start` = ? AND td.org_code like concat('%',?,'%') AND td.create_time BETWEEN ? AND ?
group by date_format(td.create_time, '%m-%d')
) t2 ON t1.dateTime = t2.month
ORDER BY table_k asc
syntax error, expect RPAREN, actual IDENTIFIER pos 189, line 2, column 116, token IDENTIFIER INTEGER
数据库版本不一样,语法有稍微不同,这个问题出现在cast函数里面,signed表示是整数,不用重新写INTEGER, 把这个INTEGER去掉就解决