背景
数据入库时,要对数据库的错误码进行识别,并进行相应处理。
比如识别了数据库报的缺少字段的异常,就可以针对此异常自动增加丢失的字段。
以下错误本人纯手工测试,绝对安全可靠,注意数据库版本,不保证不同版本都能用
通用
错误说明 | oracle11gR2 | mysql8.0.12.0 | sqlserver2014 |
---|---|---|---|
表不存在 | 942 | 1146 | 208 |
字段不存在 | 904 | 1054 | 207 |
违反主键约束 | 1 | 1062 | 2627 |
违反唯一索引 | 1 | 1062 | 2601 |
值不能为null | 1400 | 1048 | 515 |
重复的列名1 | 957 | 1110 | 264 |
字符串类型
错误说明 | oracle11gR2 - VarChar 2 | mysql8.0.12.0 - VarChar | sqlserver2014 - VarChar |
---|---|---|---|
字符串超出长度2 | 12899 | 1406 | 8152 |
数字类型
错误说明 | oracle11gR2 - Number | mysql8.0.12.0 - Decimal | sqlserver2014 - Decimal |
---|---|---|---|
字母无法转化为数字3 | 1722 | 1366 | 8114 |
数值超出精度4 | 1438 | 1264 | 8115 |
日期类型
错误说明 | oracle11gR2 - Date | mysql8.0.12.0 - DateTime | sqlserver2014 - DateTime |
---|---|---|---|
字母无法转化日期5 | 1858 | 1292 | 241 |
日期格式不对6 | 1861 | 1411 | 241或242 |
月份超出范围7 | 1843 | 1411 | 242 |
日期超出范围8 | 1847 | 1411 | 242 |
小时超出范围 | 1850 | 1411 | 242 |
分钟超出范围 | 1851 | 1411 | 242 |
秒超出范围 | 1852 | 1411 | 242 |
重复的列名,如:INSERT INTO TABLE_NAME(COL1,COL1) ↩︎
字符串超出长度,如:'aaa’写入VarChar(1)类型时 ↩︎
字母无法转化为数字,如:'a’写入Decimal(2)类型时 ↩︎
数值超出精度,如:11.1写入Decimal(1,1)类型时 ↩︎
字母无法转化日期,如:将’aa-bb-cc’转化为日期 ↩︎
日期格式不对,如:将’2018/01/01’转化为’mm/dd/yyyy’格式的日期 ↩︎
月份超出范围,如:将’13/01/2018’转化为’mm/dd/yyyy’格式的日期 ↩︎
日期超出范围,如:将’01/32/2018’转化为’mm/dd/yyyy’格式的日期 ↩︎