您的位置:首页 > 娱乐 > 八卦 > 解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决

解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决

2025/2/25 1:18:19 来源:https://blog.csdn.net/weixin_44912902/article/details/140134223  浏览:    关键词:解决数据库PGSQL,在Mybatis中创建临时表报错TODO IDENTIFIER,连接池用的Druid。更换最新版本Druid仍然报错解决

Druid版本1.1.9报错Caused by: java.sql.SQLException: sql injection violation, syntax error: TODO IDENTIFIER : CREATE TEMPORARY TABLE temp_ball_classify (id int8 NOT NULL,create_time TIMESTAMP,create_by VARCHAR,classify_name VARCHAR)

代码如下:
测试类

在这里插入图片描述

mapper层

在这里插入图片描述

xml编写sql语句

在这里插入图片描述

报错信息

在这里插入图片描述

我在navicat中尝试了一下执行相同的sql创建临时表语句,确实是能执行的。首先排除了语句错误的问题,TEMP或TEMPORARY在navicat中都是可以执行成功的。但是在Mybatis中无法执行成功。

在这里插入图片描述

然后我又进行了一次测试,在xml中的sql创建临时表语句把TEMPORARY删除,直接创建一张物理表,确实成功的执行了。。。

在这里插入图片描述
那么,问题出在哪里了。。什么原因导致使用TEMP或TEMPORARY无法创建临时表。

在网上搜索了一下,说把Druid版本升级到最新,我试着升级到了最新,确实不报这个错误了,又报了一个新的错误。。。

Caused by: java.sql.SQLException: sql injection violation, dbType postgresql, , druid-version 1.2.23, syntax error: syntax error, error in :'CREATE TEMPORARY TABLE temp_ball_clas', expect TABLE, actual null, pos 16, line 1, column 8, token IDENTIFIER TEMPORARY : CREATE TEMPORARY TABLE temp_ball_classify (id int8 NOT NULL,create_time TIMESTAMP,create_by VARCHAR,classify_name VARCHAR)

syntax error, error in :'CREATE TEMPORARY TABLE temp_ball_clas', expect TABLE, actual null, pos 16, line 1, column 8, token IDENTIFIER TEMPORARY

在这里插入图片描述

然后我找到了Druid的配置,把全部配置都注释掉,居然可以成功的执行了。。然后我一个一个配置排查发现,有个filters的配置,引起的报错,只要把这个注释了,就能成功执行,不管切换什么版本的Druid。。。都能成功执行。。。。。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com