未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
2015-08-13 15:52
645 查看
今天遇到个奇怪的问题,在取数据生成orm对象时报错,内容是:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
一开始按照字面意思,以为是查询到的数据中非空字段中存在空值,或者主键重复等问题,但是找了半天也没有,然后在网上搜索了下这个问题,有人给出的结论是:强类型的DataTable和SQL语句查询出的结果不匹配。 简单说就是强类型的DataTable比SQL语句查询出来的结果集要多一些数据列或这属性不对应。
然后我仔细比较了所有字段(我这表有60多个字段....)发现字段数量也没有问题,又查了下,网上说有可能是属性问题,字段的数据长度的问题,于是一段一段的排查,终于找到出问题的列,这个列数据库中长度是50,在orm对象xml文件中只标了30,因为这个字段之前数据库中没有存储过超过30的字符串,所以一直也没问题,但是最近存储了超过30的字符串,所以报错了。
结论:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
这个报错有可能是数据长度的问题。
一开始按照字面意思,以为是查询到的数据中非空字段中存在空值,或者主键重复等问题,但是找了半天也没有,然后在网上搜索了下这个问题,有人给出的结论是:强类型的DataTable和SQL语句查询出的结果不匹配。 简单说就是强类型的DataTable比SQL语句查询出来的结果集要多一些数据列或这属性不对应。
然后我仔细比较了所有字段(我这表有60多个字段....)发现字段数量也没有问题,又查了下,网上说有可能是属性问题,字段的数据长度的问题,于是一段一段的排查,终于找到出问题的列,这个列数据库中长度是50,在orm对象xml文件中只标了30,因为这个字段之前数据库中没有存储过超过30的字符串,所以一直也没问题,但是最近存储了超过30的字符串,所以报错了。
结论:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
这个报错有可能是数据长度的问题。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- c#调用COM组件
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- C#实现把指定数据写入串口
- CentOS下DB2数据库安装过程详解
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- C#中尾递归的使用、优化及编译器优化