出错的sql代码段:

        UPDATE `agent`
		SET `name`=#{name},
			`areacode`=#{areacode},
			`address`=#{address},
			`linkman`=#{linkman},
			`tel`=#{tel},
			`staff_type`=${staffType},
			`station_ids`=#{stationIds},
			`username`=#{username},
			`account_blocked`=#{accountBlocked}
		WHERE `id`=#{id};
		<if test="password!=null and password!=''">
			UPDATE `agent` SET `password`=#{password} WHERE `id`=#{id};
		</if>

使用mybatis,在进行数据库查询的时候出现了这个错误:

com.alibaba.druid.filter.stat.StatFilter:148 - merge sql error, dbType postgresql, sql :

 网上搜了一下,大多有两种说法:

1.把druid.stat.mergeSql设置为false就可以了。但是经过实测并不能解决,仍然会报错。

2.把语句里面的表名和属性名全部用``号包起来以避免和sql关键字冲突。实测不能解决,仍然会报错

后来我百度百科里查了一下,mergeSql属性在mysql里是没有用的,mysql并不支持merge,所以修改之后不会有任何作用。

接着分析代码,滤了一遍又一遍,发现一个地方有点不一样:

`staff_type`=${staffType},

这地方用的是$符号不是#号,修改成#号之后,问题解决

但是依稀记得之前使用#号后面的数字做更新是做不到的,所以改成了#号,现在更改回来了又可以了,费解。

Logo

更多推荐