目录
1.问题说明
使用navicat执行存储过程时报错如下:
### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 转换 varchar 值'400444430496190464' 时溢出了 INT2 列。请使用较大的整数列。
### The error may exist in file [D:\IdeaProjects\KingDataBase-server\em\target\classes\mapper\master\dictionaries\ColEntryMapper.xml]
### The error may involve com.kingagroot.info.em.mvc.persistent.mapper.master.dictionaries.ColEntryMapper.execRemove
### The error occurred while handling results
### SQL: alter table PEDIGREE drop constraint PEDIGREE_FKImage400444430496190464 ; alter table PEDIGREE drop column C_IMGELIN123 ; delete from pedigree_log where col_id = '400444430496190464' ; exec spPEMRemoveDocCol 1,400444430496190464 ; alter table EXP_PRE drop constraint EXP_PRE_FKImage400444430496190464 ; alter table EXP_PRE drop column C_IMGELIN123 ; exec spPEMRemoveDocCol 20,400444430496190464
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 转换 varchar 值'400444430496190464' 时溢出了 INT2 列。请使用较大的整数列。
; uncategorized SQLException; SQL state [S0002]; error code [244]; 转换 varchar 值'400444430496190464' 时溢出了 INT2 列。请使用较大的整数列。
错误原因是数据库中字段的内容和字段类型不符合,并且超过字段类型的数据范围。 在 查询条件中及更新项目中都会出现这样的问题
2.解决方案
修改数据库的字段类型为nvarchar(50)
3.总结
在navicat中执行较长的存储过程时,会出现难以定位出错位置的问题,可以在存储过程中使用print语句输出标识符,如果没有进行输出,就可以判断此标识符和上一个标识符之间存在问题。