druid配置了wall,在执行数据库脚本的时候报了class com.alibaba.druid.sql.ast.statement.SQLIfStatement not allow 是什么原因

o2g1uqev  于 21天前  发布在  Druid
关注(0)|答案(6)|浏览(22)

SQL State : null
Error Code : 0
Message : sql injection violation, class com.alibaba.druid.sql.ast.statement.SQLIfStatement not allow : CREATE PROCEDURE v_3910_modify_Table()
BEGIN

IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema='fsboss' AND table_name = 't_operator' AND column_name = 'node') THEN
	
END IF;

END
Location : db/migration/mysql/V3.9.1.0__update.sql (E:\boss-dal\boss-dal\WEB-INF\classes\db\migration\mysql\V3.9.1.0__update.sql)
Line : 70
Statement : CREATE PROCEDURE v_3910_modify_Table()
BEGIN

IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema='fsboss' AND table_name = 't_operator' AND column_name = 'node') THEN
	
END IF;

END

at org.flywaydb.core.internal.dbsupport.SqlScript.execute(SqlScript.java:117)
at org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.execute(SqlMigrationExecutor.java:71)
at org.flywaydb.core.internal.command.DbMigrate$5.doInTransaction(DbMigrate.java:284)
at org.flywaydb.core.internal.command.DbMigrate$5.doInTransaction(DbMigrate.java:282)
at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:72)
at org.flywaydb.core.internal.command.DbMigrate.applyMigration(DbMigrate.java:282)
at org.flywaydb.core.internal.command.DbMigrate.access$800(DbMigrate.java:46)
at org.flywaydb.core.internal.command.DbMigrate$2.doInTransaction(DbMigrate.java:207)
at org.flywaydb.core.internal.command.DbMigrate$2.doInTransaction(DbMigrate.java:156)
at org.flywaydb.core.internal.util.jdbc.TransactionTemplate.execute(TransactionTemplate.java:72)
at org.flywaydb.core.internal.command.DbMigrate.migrate(DbMigrate.java:156)
at org.flywaydb.core.Flyway$1.execute(Flyway.java:1059)
at org.flywaydb.core.Flyway$1.execute(Flyway.java:1006)
at org.flywaydb.core.Flyway.execute(Flyway.java:1418)
at org.flywaydb.core.Flyway.migrate(Flyway.java:1006)
at com.fastonz.DBVersionUp.DBVersionManagement.onApplicationEvent(DBVersionManagement.java:20)
at com.fastonz.DBVersionUp.DBVersionManagement.onApplicationEvent(DBVersionManagement.java:1)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:96)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:948)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5003)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Caused by: java.sql.SQLException: sql injection violation, class com.alibaba.druid.sql.ast.statement.SQLIfStatement not allow : CREATE PROCEDURE v_3910_modify_Table()
BEGIN

IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema='fsboss' AND table_name = 't_operator' AND column_name = 'node') THEN
	
END IF;

END
at com.alibaba.druid.wall.WallFilter.checkInternal(WallFilter.java:800)
at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:780)
at com.alibaba.druid.wall.WallFilter.statement_execute(WallFilter.java:413)
at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2598)
at com.alibaba.druid.filter.FilterAdapter.statement_execute(FilterAdapter.java:2473)
at com.alibaba.druid.filter.FilterEventAdapter.statement_execute(FilterEventAdapter.java:188)
at com.alibaba.druid.filter.FilterChainImpl.statement_execute(FilterChainImpl.java:2598)
at com.alibaba.druid.proxy.jdbc.StatementProxyImpl.execute(StatementProxyImpl.java:147)
at com.alibaba.druid.pool.DruidPooledStatement.execute(DruidPooledStatement.java:558)
at org.flywaydb.core.internal.dbsupport.JdbcTemplate.executeStatement(JdbcTemplate.java:238)
at org.flywaydb.core.internal.dbsupport.SqlScript.execute(SqlScript.java:114)
... 33 more

jobtbby3

jobtbby31#

有没有人遇到过这个问题啊?就是脚本创建一个存储过程,在begin和end中只有if和endIf是会报这个错的,求解答,求解答,求解答

bwntbbo3

bwntbbo33#

我也遇到了,是不是关掉wall就不会报错了?

qfe3c7zg

qfe3c7zg6#

没有人说解决方式吗?

相关问题