{ "[]":{ "Moment":{ "@column":"userId,max(id)", "@group":"userId", "@having":"max(id)>=100" }, "count":10 }, "ok":false, "code":406, "msg":"字符 userId,max 不合法!预编译模式下 @column:\"column0,column1:alias1;function0(arg0,arg1,...);function1(...):alias2...\" 中 function 必须符合小写英文单词的 SQL 函数名格式!且必须是后端允许调用的 SQL 函数!", "debug:info|help":"浏览器打开以下链接查看解答\n\n【APIAuto】: \n http://apijson.cn/api?type=JSON&url=http%3A%2F%2Fapijson.cn%3A8080%2Fget&json=%7B%22%5B%5D%22%3A%7B%22Moment%22%3A%7B%22%40column%22%3A%22userId%2Cmax%28id%29%22%2C%22%40group%22%3A%22userId%22%2C%22%40having%22%3A%22max%28id%29%3E%3D100%22%7D%2C%22count%22%3A10%7D%7D \n\n【GitHub】: \n https://www.google.com/search?q=site%3Agithub.com%2FTencent%2FAPIJSON+++%E5%AD%97%E7%AC%A6+userId%2Cmax+%E4%B8%8D%E5%90%88%E6%B3%95%EF%BC%81%E9%A2%84%E7%BC%96%E8%AF%91%E6%A8%A1%E5%BC%8F%E4%B8%8B+%40column%3A%22column0%2Ccolumn1%3Aalias1%3Bfunction0%28arg0%2Carg1%2C...%29%3Bfunction1%28...%29%3Aalias2...%22+%E4%B8%AD+function+%E5%BF%85%E9%A1%BB%E7%AC%A6%E5%90%88%E5%B0%8F%E5%86%99%E8%8B%B1%E6%96%87%E5%8D%95%E8%AF%8D%E7%9A%84+SQL+%E5%87%BD%E6%95%B0%E5%90%8D%E6%A0%BC%E5%BC%8F%EF%BC%81%E4%B8%94%E5%BF%85%E9%A1%BB%E6%98%AF%E5%90%8E%E7%AB%AF%E5%85%81%E8%AE%B8%E8%B0%83%E7%94%A8%E7%9A%84+SQL+%E5%87%BD%E6%95%B0%21 \n\n【Google】:\n https://www.google.com/search?q=%E5%AD%97%E7%AC%A6+userId%2Cmax+%E4%B8%8D%E5%90%88%E6%B3%95%EF%BC%81%E9%A2%84%E7%BC%96%E8%AF%91%E6%A8%A1%E5%BC%8F%E4%B8%8B+%40column%3A%22column0%2Ccolumn1%3Aalias1%3Bfunction0%28arg0%2Carg1%2C...%29%3Bfunction1%28...%29%3Aalias2...%22+%E4%B8%AD+function+%E5%BF%85%E9%A1%BB%E7%AC%A6%E5%90%88%E5%B0%8F%E5%86%99%E8%8B%B1%E6%96%87%E5%8D%95%E8%AF%8D%E7%9A%84+SQL+%E5%87%BD%E6%95%B0%E5%90%8D%E6%A0%BC%E5%BC%8F%EF%BC%81%E4%B8%94%E5%BF%85%E9%A1%BB%E6%98%AF%E5%90%8E%E7%AB%AF%E5%85%81%E8%AE%B8%E8%B0%83%E7%94%A8%E7%9A%84+SQL+%E5%87%BD%E6%95%B0%21 \n\n【百度】:\n https://www.baidu.com/s?ie=UTF-8&wd=%E5%AD%97%E7%AC%A6+userId%2Cmax+%E4%B8%8D%E5%90%88%E6%B3%95%EF%BC%81%E9%A2%84%E7%BC%96%E8%AF%91%E6%A8%A1%E5%BC%8F%E4%B8%8B+%40column%3A%22column0%2Ccolumn1%3Aalias1%3Bfunction0%28arg0%2Carg1%2C...%29%3Bfunction1%28...%29%3Aalias2...%22+%E4%B8%AD+function+%E5%BF%85%E9%A1%BB%E7%AC%A6%E5%90%88%E5%B0%8F%E5%86%99%E8%8B%B1%E6%96%87%E5%8D%95%E8%AF%8D%E7%9A%84+SQL+%E5%87%BD%E6%95%B0%E5%90%8D%E6%A0%BC%E5%BC%8F%EF%BC%81%E4%B8%94%E5%BF%85%E9%A1%BB%E6%98%AF%E5%90%8E%E7%AB%AF%E5%85%81%E8%AE%B8%E8%B0%83%E7%94%A8%E7%9A%84+SQL+%E5%87%BD%E6%95%B0%21 \n\n都没找到答案?打开这个链接 \n https://github.com/Tencent/APIJSON/issues/new?assignees=&labels=&template=--bug.md \n然后提交问题,推荐用以下模板修改,注意要换行保持清晰可读。 \n【标题】:字符 userId,max 不合法!预编译模式下 @column:\"column0,column1:alias1;function0(arg0,arg1,...);function1(...):alias2...\" 中 function 必须符合小写英文单词的 SQL 函数名格式!且必须是后端允许调用的 SQL 函数! \n【内容】: **环境信息** \n 系统: Linux 5.10.134-16.3.al8.x86_64 \n 数据库: MYSQL 8.0.11 \n JDK: 17.0.2 amd64 \n APIJSON: 7.0.3\n\n**问题描述**\n字符 userId,max 不合法!预编译模式下 @column:\"column0,column1:alias1;function0(arg0,arg1,...);function1(...):alias2...\" 中 function 必须符合小写英文单词的 SQL 函数名格式!且必须是后端允许调用的 SQL 函数! \n\n \n\nPOST http://apijson.cn:8080/get \n发送请求 Request JSON:\n ```js \n 请填写,例如 { \"Users\":{} } \n``` \n\n返回结果 Response JSON:\n ```js \n 请填写,例如 { \"Users\": {}, \"code\": 401, \"msg\": \"Users 不允许 UNKNOWN 用户的 GET 请求!\" } \n```", "time":1743647262864, "sql:generate|cache|execute|maxExecute":"0|0|0|2000", "depth:count|max":"3|5", "time:start|duration|end|parse|sql":"1743647262862|2|1743647262864|2|0", "trace:throw":"java.lang.IllegalArgumentException", "trace:stack":[{ "className":"apijson.orm.AbstractSQLConfig", "fileName":"AbstractSQLConfig.java", "lineNumber":2113, "methodName":"parseSQLExpression", "nativeMethod":false },{ "className":"apijson.orm.AbstractSQLConfig", "fileName":"AbstractSQLConfig.java", "lineNumber":2022, "methodName":"getColumnString", "nativeMethod":false },{ "className":"apijson.orm.AbstractSQLConfig", "fileName":"AbstractSQLConfig.java", "lineNumber":1836, "methodName":"getColumnString", "nativeMethod":false },{ "className":"apijson.orm.AbstractSQLConfig", "fileName":"AbstractSQLConfig.java", "lineNumber":4558, "methodName":"getSQL", "nativeMethod":false },{ "className":"apijson.orm.AbstractSQLConfig", "fileName":"AbstractSQLConfig.java", "lineNumber":4489, "methodName":"getSQL", "nativeMethod":false },{ "className":"apijson.demo.DemoSQLConfig", "fileName":"DemoSQLConfig.java", "lineNumber":410, "methodName":"getSQL", "nativeMethod":false },{ "className":"apijson.orm.AbstractSQLExecutor", "fileName":"AbstractSQLExecutor.java", "lineNumber":184, "methodName":"execute", "nativeMethod":false },{ "className":"apijson.demo.DemoSQLExecutor", "fileName":"DemoSQLExecutor.java", "lineNumber":268, "methodName":"execute", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":2051, "methodName":"executeSQL", "nativeMethod":false },{ "className":"apijson.demo.DemoParser", "fileName":"DemoParser.java", "lineNumber":130, "methodName":"executeSQL", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":1114, "methodName":"onSQLExecute", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":952, "methodName":"executeSQL", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":39, "methodName":"executeSQL", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":1217, "methodName":"onObjectParse", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":597, "methodName":"onChildParse", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":283, "methodName":"parse", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":39, "methodName":"parse", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":1127, "methodName":"onObjectParse", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":1356, "methodName":"onArrayParse", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":560, "methodName":"onChildParse", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":283, "methodName":"parse", "nativeMethod":false },{ "className":"apijson.orm.AbstractObjectParser", "fileName":"AbstractObjectParser.java", "lineNumber":39, "methodName":"parse", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":1127, "methodName":"onObjectParse", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":529, "methodName":"parseResponse", "nativeMethod":false },{ "className":"apijson.framework.APIJSONParser", "fileName":"APIJSONParser.java", "lineNumber":117, "methodName":"parseResponse", "nativeMethod":false },{ "className":"apijson.demo.DemoParser", "fileName":"DemoParser.java", "lineNumber":90, "methodName":"parseResponse", "nativeMethod":false },{ "className":"apijson.orm.AbstractParser", "fileName":"AbstractParser.java", "lineNumber":444, "methodName":"parseResponse", "nativeMethod":false },{ "className":"apijson.boot.DemoController", "fileName":"DemoController.java", "lineNumber":458, "methodName":"openGet", "nativeMethod":false },{ "className":"jdk.internal.reflect.GeneratedMethodAccessor115", "lineNumber":-1, "methodName":"invoke", "nativeMethod":false },{ "className":"jdk.internal.reflect.DelegatingMethodAccessorImpl", "fileName":"DelegatingMethodAccessorImpl.java", "lineNumber":43, "methodName":"invoke", "moduleName":"java.base", "moduleVersion":"17.0.2", "nativeMethod":false },{ "className":"java.lang.reflect.Method", "fileName":"Method.java", "lineNumber":568, "methodName":"invoke", "moduleName":"java.base", "moduleVersion":"17.0.2", "nativeMethod":false },{ "className":"org.springframework.web.method.support.InvocableHandlerMethod", "fileName":"InvocableHandlerMethod.java", "lineNumber":255, "methodName":"doInvoke", "nativeMethod":false },{ "className":"org.springframework.web.method.support.InvocableHandlerMethod", "fileName":"InvocableHandlerMethod.java", "lineNumber":188, "methodName":"invokeForRequest", "nativeMethod":false },{ "className":"org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod", "fileName":"ServletInvocableHandlerMethod.java", "lineNumber":118, "methodName":"invokeAndHandle", "nativeMethod":false },{ "className":"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter", "fileName":"RequestMappingHandlerAdapter.java", "lineNumber":926, "methodName":"invokeHandlerMethod", "nativeMethod":false },{ "className":"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter", "fileName":"RequestMappingHandlerAdapter.java", "lineNumber":831, "methodName":"handleInternal", "nativeMethod":false },{ "className":"org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter", "fileName":"AbstractHandlerMethodAdapter.java", "lineNumber":87, "methodName":"handle", "nativeMethod":false },{ "className":"org.springframework.web.servlet.DispatcherServlet", "fileName":"DispatcherServlet.java", "lineNumber":1089, "methodName":"doDispatch", "nativeMethod":false },{ "className":"org.springframework.web.servlet.DispatcherServlet", "fileName":"DispatcherServlet.java", "lineNumber":979, "methodName":"doService", "nativeMethod":false },{ "className":"org.springframework.web.servlet.FrameworkServlet", "fileName":"FrameworkServlet.java", "lineNumber":1014, "methodName":"processRequest", "nativeMethod":false },{ "className":"org.springframework.web.servlet.FrameworkServlet", "fileName":"FrameworkServlet.java", "lineNumber":903, "methodName":"doGet", "nativeMethod":false },{ "className":"jakarta.servlet.http.HttpServlet", "fileName":"HttpServlet.java", "lineNumber":527, "methodName":"service", "nativeMethod":false },{ "className":"org.springframework.web.servlet.FrameworkServlet", "fileName":"FrameworkServlet.java", "lineNumber":885, "methodName":"service", "nativeMethod":false },{ "className":"jakarta.servlet.http.HttpServlet", "fileName":"HttpServlet.java", "lineNumber":614, "methodName":"service", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":206, "methodName":"internalDoFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":150, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.apache.tomcat.websocket.server.WsFilter", "fileName":"WsFilter.java", "lineNumber":51, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":175, "methodName":"internalDoFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":150, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.springframework.web.filter.RequestContextFilter", "fileName":"RequestContextFilter.java", "lineNumber":100, "methodName":"doFilterInternal", "nativeMethod":false },{ "className":"org.springframework.web.filter.OncePerRequestFilter", "fileName":"OncePerRequestFilter.java", "lineNumber":116, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":175, "methodName":"internalDoFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":150, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.springframework.web.filter.FormContentFilter", "fileName":"FormContentFilter.java", "lineNumber":93, "methodName":"doFilterInternal", "nativeMethod":false },{ "className":"org.springframework.web.filter.OncePerRequestFilter", "fileName":"OncePerRequestFilter.java", "lineNumber":116, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":175, "methodName":"internalDoFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":150, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.springframework.web.filter.CharacterEncodingFilter", "fileName":"CharacterEncodingFilter.java", "lineNumber":201, "methodName":"doFilterInternal", "nativeMethod":false },{ "className":"org.springframework.web.filter.OncePerRequestFilter", "fileName":"OncePerRequestFilter.java", "lineNumber":116, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":175, "methodName":"internalDoFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.ApplicationFilterChain", "fileName":"ApplicationFilterChain.java", "lineNumber":150, "methodName":"doFilter", "nativeMethod":false },{ "className":"org.apache.catalina.core.StandardWrapperValve", "fileName":"StandardWrapperValve.java", "lineNumber":167, "methodName":"invoke", "nativeMethod":false },{ "className":"org.apache.catalina.core.StandardContextValve", "fileName":"StandardContextValve.java", "lineNumber":90, "methodName":"invoke", "nativeMethod":false },{ "className":"org.apache.catalina.authenticator.AuthenticatorBase", "fileName":"AuthenticatorBase.java", "lineNumber":482, "methodName":"invoke", "nativeMethod":false },{ "className":"org.apache.catalina.core.StandardHostValve", "fileName":"StandardHostValve.java", "lineNumber":115, "methodName":"invoke", "nativeMethod":false },{ "className":"org.apache.catalina.valves.ErrorReportValve", "fileName":"ErrorReportValve.java", "lineNumber":93, "methodName":"invoke", "nativeMethod":false },{ "className":"org.apache.catalina.core.StandardEngineValve", "fileName":"StandardEngineValve.java", "lineNumber":74, "methodName":"invoke", "nativeMethod":false },{ "className":"org.apache.catalina.connector.CoyoteAdapter", "fileName":"CoyoteAdapter.java", "lineNumber":344, "methodName":"service", "nativeMethod":false },{ "className":"org.apache.coyote.http11.Http11Processor", "fileName":"Http11Processor.java", "lineNumber":391, "methodName":"service", "nativeMethod":false },{ "className":"org.apache.coyote.AbstractProcessorLight", "fileName":"AbstractProcessorLight.java", "lineNumber":63, "methodName":"process", "nativeMethod":false },{ "className":"org.apache.coyote.AbstractProtocol$ConnectionHandler", "fileName":"AbstractProtocol.java", "lineNumber":896, "methodName":"process", "nativeMethod":false },{ "className":"org.apache.tomcat.util.net.NioEndpoint$SocketProcessor", "fileName":"NioEndpoint.java", "lineNumber":1736, "methodName":"doRun", "nativeMethod":false },{ "className":"org.apache.tomcat.util.net.SocketProcessorBase", "fileName":"SocketProcessorBase.java", "lineNumber":52, "methodName":"run", "nativeMethod":false },{ "className":"org.apache.tomcat.util.threads.ThreadPoolExecutor", "fileName":"ThreadPoolExecutor.java", "lineNumber":1191, "methodName":"runWorker", "nativeMethod":false },{ "className":"org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker", "fileName":"ThreadPoolExecutor.java", "lineNumber":659, "methodName":"run", "nativeMethod":false },{ "className":"org.apache.tomcat.util.threads.TaskThread$WrappingRunnable", "fileName":"TaskThread.java", "lineNumber":63, "methodName":"run", "nativeMethod":false },{ "className":"java.lang.Thread", "fileName":"Thread.java", "lineNumber":833, "methodName":"run", "moduleName":"java.base", "moduleVersion":"17.0.2", "nativeMethod":false }], "@link":"http://apijson.cn:8080/api/index.html?send=false&redirect=false&type=JSON&decode=true&url=http%3A%2F%2Fapijson.cn%3A8080%2Fget&json=%7B%22%5B%5D%22%3A%7B%22count%22%3A10%2C%22Moment%22%3A%7B%22%40column%22%3A%22userId%2Cmax%28id%29%22%2C%22%40group%22%3A%22userId%22%2C%22%40having%22%3A%22max%28id%29%3E%3D100%22%7D%7D%7D" }