1. 常见报错
报错 | 可能原因 | |
---|---|---|
1 | 无法将 NULL 插入XX | 数据库表设置了某字段不能为空,但是该字段提交的数据中存在空值 |
2 | check constraint (NASMES.SYS_C0014107) violated | 提交的数据中存在违反数据库设置的约束的数据,比如某字段设置为了主键不能有重复值,但是提交的数据中存在重复值 |
3 | 违反唯一键约束 | |
4 | Violate unique constraint on[***] | |
5 | no operation allowed after statement closed | 数据库设置了权限,限制了增删改sql语句的执行 |
6 | no operations allowed | |
7 | ora-01031 权限不足 | |
8 | 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'XXX' 中的标识列插入显式值 | 对自增长id进行修改时的报错,可参考数据库自增长ID填报解决 |
9 | 无效数字 | 某个提交值和其入库字段类型不一致 |
10 | 批处理异常 | |
11 | No value specified for parameter XX | |
12 | 数据提交错误,索引中丢失in 或out | |
13 | 没有为参数号XX设置值 | |
14 | 数据列类型错误/不匹配 | |
15 | FR-Engine-Write_Column_Type_Mismatch | |
16 | Data too long for column 'file' at row X | 某个提交值的长度超过了其入库字段的限制 |
17 | 将截断字符串或二进制数据 | |
18 | ERRORCODE=-4229, SQLSTATE=null | |
19 | 公式解析错误 | 某个公式存在问题 |
20 | Task DCL error HiveException: [Error 20132] Error, you should set transaction.type before any DCL statement | 星环数据库的报错,未在DCL声明前定义事务类型,可尝试在数据连接url后增加transaction.type=inceptor参数 |
21 | Lock wait timeout exceeded; try restarting transaction | 填报事务已锁死,需要先在数据库解锁对应事务,才可继续填报 |
22 | Attempt to do update or delete using transaction manager that does not support these operations | hive数据库中没有开启update和delete操作,需要在数据库开启 |
23 | 没有为参数号设置值 | 检查填报属性的「内置SQL」提交设置中,「值」是否都已配置且配置正确 |
2. 排查方式
在了解了报错可能的原因后,可以采取一些针对性的方式去定位问题,下面列出几种常用的方法。
对填报属性进行二分法测试,定位到出问题的字段,查看其绑定的值是否有问题。
对模板结构进行简化,删除不相关的元素,定位出问题点。
在数据库新建一个简单的表来测试是否提交成功。
更换其他数据库来提交测试。
3. 填报调试工具
在排查提交异常的问题时,强烈推荐安装此插件:填报调试插件。该插件可根据设置的填报属性,将页面数据结果可视化,让您对提交结果一目了然。