druid : 1.2.4 and 1.2.5
String sql2 = "ALTER \n" + "ALGORITHM=UNDEFINED \n" + "SQL SECURITY DEFINER \n" + "View test2
.v1
AS \n" + "select test_table1
.id
AS id
,test_table1
.value
AS value
from test_table1
;";
SQLStatementParser parser2 = SQLParserUtils.createSQLStatementParser(sql2,
JdbcConstants.MYSQL , false);
SQLStatement statement = parser2.parseStatement();
System.out.println(SQLUtils.toSQLString(statement, DbType.mysql,
new SQLUtils.FormatOption(false,false)));
输出结果:
atler algorithm = UNDEFINED sql security = DEFINER view test2
.v1
as select test_table1
.id
as id
, test_table1
.value
as value
from test_table1
问题: (1) sql security = DEFINER 错误,mysql中是 sql security DEFINER,不需要 等号; (2)小写打印, alter 关键字输出有误,atler。
原提问者GitHub用户lawenyuan
能是由于以下原因之一:
ALTER VIEW 语句语法错误。在编写 ALTER VIEW 语句时,需要确保语法正确,并遵循数据库的语法规范。可以使用 SQL 解析器或者其他方式检查语法错误,并进行修正。
SQL 解析器版本不兼容。在解析 ALTER VIEW 语句时,需要确保 SQL 解析器的版本支持所使用的语法和选项。如果版本不兼容,可能会导致解析错误。
ALTER VIEW 语句中包含复杂的语法。如果 ALTER VIEW 语句中包含复杂的语法,例如子查询或者函数调用等,可能会导致解析错误。
问题已修复,请用新版本
https://github.com/alibaba/druid/releases/tag/1.2.6
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。