SQL语句: INSERT INTO C_CART (cartId, customerId, productSubId, distProdSubId, storeId, num, msg, isDel, delTime, createtime) VALUES (next value for MYCATSEQ_CART, ?, ?, ?, ?, ?, ?, ?, ?, ?)
报错地方: next value for MYCATSEQ_CART
报错信息(部分): nested exception is java.sql.SQLException: sql injection violation, syntax error: syntax error : INSERT INTO C_CART (cartId, customerId, productSubId, distProdSubId, storeId, num, msg, isDel, delTime, createtime) VALUES (next value for MYCATSEQ_CART, ?, ?, ?, ?, ?, ?, ?, ?, ?)] with root cause com.alibaba.druid.sql.parser.ParserException: syntax error at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseValueClause(MySqlStatementParser.java:2132) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseInsert(MySqlStatementParser.java:2022) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseInsert(MySqlStatementParser.java:193) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:199) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:148) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.wall.WallProvider.checkInternal(WallProvider.java:620) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.wall.WallProvider.check(WallProvider.java:574) ~[druid-1.0.26.jar:1.0.26] at com.alibaba.druid.wall.WallFilter.check(WallFilter.java:711) ~[druid-1.0.26.jar:1.0.26]
在 控制台 运行, 报错信息(部分): caught err: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :' FOR MYCATSEQ_CART',expect UPDATE, actual IDENTIFIER MYCATSEQ_CART at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:239) at com.alibaba.druid.sql.parser.SQLParser.accept(SQLParser.java:247) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.query(MySqlSelectParser.java:179) at com.alibaba.druid.sql.parser.SQLSelectParser.select(SQLSelectParser.java:62) at com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser.parseSelect(MySqlStatementParser.java:237) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:183) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatement(SQLStatementParser.java:2065) at io.mycat.server.util.SchemaUtil.parseSchema(SchemaUtil.java:25) at io.mycat.server.ServerConnection.execute(ServerConnection.java:214) at io.mycat.server.handler.SelectHandler.handle(SelectHandler.java:105) at io.mycat.server.ServerQueryHandler.query(ServerQueryHandler.java:79) at io.mycat.net.FrontendConnection.query(FrontendConnection.java:317) at io.mycat.net.FrontendConnection.query(FrontendConnection.java:337) at io.mycat.net.handler.FrontendCommandHandler.handle(FrontendCommandHandler.java:71)
if (lexer.token() == Token.FOR) { lexer.nextToken(); accept(Token.UPDATE);
queryBlock.setForUpdate(true);
if (identifierEquals("NO_WAIT")) {
lexer.nextToken();
queryBlock.setNoWait(true);
} else if (identifierEquals("WAIT")) {
lexer.nextToken();
SQLExpr waitTime = this.exprParser.primary();
queryBlock.setWaitTime(waitTime);
}
}
原提问者GitHub用户jiangchengshi c
如果您在使用MYCAT的全局序列(Global Sequence)功能时遇到查询语句报错,可能是因为查询语句不正确或者MYCAT配置不正确。以下是一些可能的解决方法:
检查查询语句是否正确
请检查您的查询语句是否正确,特别注意以下几个可能引起语法错误的因素:
SQL语法错误:请确保查询语句符合SQL语法规范,特别是关键字、表名、列名等是否正确。
查询条件错误:请确保查询条件是否正确,特别是查询条件中是否包含不支持的操作符或者数据类型。
权限问题:请确保当前用户对于需要查询的表或者列拥有足够的权限。
请确认查询语句是否正确,如果有错误请及时修改。
检查MYCAT配置是否正确
请检查您的MYCAT配置是否正确,特别注意以下几个可能引起查询语句报错的因素:
全局序列配置:请确保MYCAT已正确配置全局序列功能,并且序列名称和表名等信息正确。
数据库连接配置:请确保MYCAT已正确配置数据库连接信息,并且数据库连接正常。
规则配置:请确保MYCAT已正确配置数据分片规则,并且数据分片规则能够正确路由到目标数据库。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。