mysql数据库输出数据语法错误_获取RDS-Mysql数据语法错误 ╰+哭是因爲堅強的太久メ 2022-10-25 11:22 43阅读 0赞 如果加工规则中涉及RDS资源的加载,则有可能会产生资源的加载或刷新错误。本文档主要介绍从RDS-Mysql获取数据出错的原因以及排查处理方法。 在成功读取源Logstore数据后,加工引擎开始对源Logstore的日志事件进行加工。如果加工规则中涉及OSS、RDS、Logstore等外联资源的加载,则也有可能会产生资源的加载或刷新错误。 控制台单独使用资源函数 加工规则 res\_rds\_mysql(address="xx",username="xx",password="xx",database="xx") 错误日志 aliyun.log.logexception.LogException: \{"errorCode": "InvalidEtlConfig", "errorMessage": "ETL config doesn't pass security check, detail: invalid type detected: ", "requestId": ""\} 排查方法 该错误信息为语法配置错误,这种错常见于用户在控制台单独使用res\_rds\_mysql、res\_log\_logstore\_pull或res\_oss\_file语法。 解决方案 资源函数语法不可以单独在控制台使用,请结合e\_table\_map或者e\_search\_table\_map等函数进行使用。 参数填写错误 加工规则 e\_table\_map(res\_rds\_mysql(address="xx",username="xx",password="xx",database="xx"),field="processid",output\_fields=\["name","xixi"\]) 错误日志 "errorMessage\\": \\"When sql is not set, table must be set\\\\nDetail: None\\" 排查方法 一般这种情况就是table和sql两个参数都没有填写。 解决方案 当table参数没有设置的时候,必须传入指定的sql语句,否则找不到表无法进行数据获取。table和sql两个参数必须传递一个。 输出字段错误 加工规则 e\_table\_map(res\_rds\_mysql(address="x",username="xx",password="xx",database="xx",table="test"),field="processid",output\_fields=\["name","xixi"\]) 错误日志 "errorMessage\\": \\"trans\_comp\_lookup: output field xixi doesn't exist in lookup table\\\\nDetail: None\\ 排查方法 出现这种错误是因为output\_fields输出的字段并不存在于mysql数据表中。 解决方案 请验证mysql数据库中数据都包含哪些字段,将正确的字段填入output\_fields中。 参数类型配置错误 加工规则 e\_table\_map(res\_rds\_mysql(address="xxx",username=1234,password="xx",database="xx",table="xx"),field="processid",output\_fields=\["name","xixi"\]) 错误日志 "errorMessage\\": \\"username not a string type\\\\nInvalid Settings 排查方法 出现这种错误是因为username不是String类型。 解决方案 所以请配置的时候根据参数文档配置正确参数的类型,否则会抛出错误。 网络或者权限错误 加工规则 e\_table\_map(res\_rds\_mysql(address="xxx",username=xxx,password="xx",database="test999",table="xx"),field="processid",output\_fields=\["name","xixi"\]) 错误日志1 message: Database connection failed, cause: (1045, "Access denied for user 'root'@'47.99.57.53' (using password: YES)") 错误日志2 message: Database connection failed, cause: (1049, "Unknown database 'test999') 排查方法 当出现Database connection failed错误信息的时候,请检查自己的配置是否错误,或者网络是否不通,请排查自己的账号是否在rds-mysql 的白名单当中。当出现无法链接错误的时候,其原因会非常详细的出现在cause原因后面,可以根据错误原因进行排查,大多是权限、密码、地址错误等。 说明 目前暂时不支持通过vpc连接rds-mysql,如果填入vpc网络地址会造成网络不通连接失败。请在address参数中配置rds-mysql所在的公网地址。vpc连接计划将在后续版本进行支持。 解决方案 排查原因后重新配置函数重启数据加工服务,连接错误或者权限错误数据加工无法恢复的错误,需要手动配置参数后重新启动。 SQL语法错误 加工规则 e\_table\_map(res\_rds\_mysql(address="xxx",username=xxx,password="xx",database="xx",sql="inset into test values(1,"aini")",field="processid",output\_fields=\["name","xixi"\])) 错误日志 "errorMessage\\": \\"The sql\_query field only supports database query syntax\\\\nInvalid Settings \\\\\\"insert into test values(1,aini)\\\\\\"\\\\nDetail: None\\", \\"requestId\\": \\"\\"\} 排查方法 出现如上错误信息,原因是填入配置中的sql语法错误。首先sql语法仅支持select从数据库中读取数据的模式。其次,当写入数据库的select语法是错误的时候,也会引发fetch data error错误,此时可以根据错误原因具体分析sql中的错误。 解决方案 修复sql语句的错误,需要注意sql只支持select查询语句。 持续刷新错误 加工规则 e\_table\_map(res\_rds\_mysql(address="xxx",username=xxx,password="xx",database="xx",table="test,field="processid",output\_fields=\["name","xixi"\],refresh\_interval=30)) 错误日志 "errorMessage\\": \\"Database connection failed, cause: (2003, \\\\\\"Can't connect to MySQL server on 'rm-wz9z68i4itrk4v8d9yo.mysql.rds.aliyuncs.com' (timed out)) 排查方法 该错误信息为rds-mysql数据库将白名单授权取消导致无法链接的错误。当持续加工过程中遇到错误,例如部分网络震荡,会自动进行重试。如果遇到权限等被取消的错误,需要手动恢复。可以根据报错查找可能导致链接超时的原因。 解决方案 在持续获取数据的过程中可能因为远程rds-mysql数据库权限变动或者表被删除等情况,此时数据库会报链接错误的问题,可以根据错误原因查看rds-mysql数据库中,是否表数据或者权限发生了变动。
还没有评论,来说两句吧...