Foxtable(狐表)用户栏目专家坐堂 → [求助]DataTable 内部索引已损坏:“5”。


  共有3043人关注过本帖树形打印复制链接

主题:[求助]DataTable 内部索引已损坏:“5”。

帅哥哟,离线,有人找我吗?
xiaoqiwei
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:668 积分:8561 威望:0 精华:0 注册:2011/5/5 23:55:00
[求助]DataTable 内部索引已损坏:“5”。  发帖心情 Post By:2020/11/21 3:14:00 [只看该作者]

Foxtable版本:2020-01-19

这是什么问题?突然这样,总是报下面两个错误

System.InvalidOperationException: DataTable 内部索引已损坏:“5”。
   在 System.Data.RBTree`1.RBInsert(Int32 root_id, Int32 x_id, Int32 mainTreeNodeID, Int32 position, Boolean append)
   在 System.Data.RBTree`1.RBInsert(Int32 root_id, Int32 x_id, Int32 mainTreeNodeID, Int32 position, Boolean append)
   在 System.Data.Index.RecordStateChanged(Int32 oldRecord, DataViewRowState oldOldState, DataViewRowState oldNewState, Int32 newRecord, DataViewRowState newOldState, DataViewRowState newNewState)
   在 System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
   在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean suppressEnsurePropertyChanged, Int32 position, Boolean fireEvent, Exception& deferredException)
   在 System.Data.DataRow.EndEdit()
   在 【FoxTable】.DataTable.O.o_00OO_.(Object A_0, DataColumnChangeEventArgs A_1)

System.Data.ConstraintException: 列“_Identify”被约束为是唯一的。值“106”已存在。
   在 System.Data.UniqueConstraint.CheckConstraint(DataRow row, DataRowAction action)
   在 System.Data.DataTable.RaiseRowChanging(DataRowChangeEventArgs args, DataRow eRow, DataRowAction eAction, Boolean fireEvent)
   在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean suppressEnsurePropertyChanged, Int32 position, Boolean fireEvent, Exception& deferredException)
   在 System.Data.DataRow.EndEdit()
   在 【FoxTable】.DataTable.O.o_00OO_.(Object A_0, DataColumnChangeEventArgs A_1)
[此贴子已经被作者于2020/11/21 3:41:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/21 9:42:00 [只看该作者]

按住ctrl键打开项目,如果不行就是项目损坏了,使用备份,如果没有备份周一联系发给客服修复

 回到顶部
帅哥哟,离线,有人找我吗?
xiaoqiwei
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:668 积分:8561 威望:0 精华:0 注册:2011/5/5 23:55:00
  发帖心情 Post By:2020/11/21 14:22:00 [只看该作者]

项目能打开,就是执行统计过程中有时正常 有时会报错

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/21 14:51:00 [只看该作者]

执行了什么代码?

有没有在异步线程里面设置表格数据?

 回到顶部
帅哥哟,离线,有人找我吗?
xiaoqiwei
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:668 积分:8561 威望:0 精华:0 注册:2011/5/5 23:55:00
  发帖心情 Post By:2020/11/21 15:42:00 [只看该作者]

异步线程里没有做表格数据,应该是异步多表统计完后填充表数据时(填进临时表)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/21 16:15:00 [只看该作者]

多个线程写一个临时表?这种肯定不行的。改为使用同步函数写入。

 回到顶部
帅哥哟,离线,有人找我吗?
xiaoqiwei
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:668 积分:8561 威望:0 精华:0 注册:2011/5/5 23:55:00
  发帖心情 Post By:2020/11/21 20:46:00 [只看该作者]

异步执行多表统计,再同步将结果写入临时表,原本好好的,昨天win10打了补丁后就出现了异常,不知道是不是系统补丁导致的问题,昨天的win10家庭中文版补丁还删除了组策略,远程桌面也有异常,组策略和远程桌面已修复,就是不知道是不是该补丁也导致狐表异常

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/22 20:17:00 [只看该作者]

试试卸载.net重装一下

 回到顶部
帅哥哟,离线,有人找我吗?
xiaoqiwei
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:668 积分:8561 威望:0 精华:0 注册:2011/5/5 23:55:00
  发帖心情 Post By:2020/11/23 22:39:00 [只看该作者]

问题已找到,在临时表使用ReplaceFor语句替换数据时有时会报那个错误 另外 PY.GetPY("部门", False, 3)有时会转换错,正确应该是bm,却有时转换出来的是 m ,部字没有转换出来(几率出错),还有其他的中文也是有机会没有转换成功。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/24 10:26:00 [只看该作者]

我做了个计划管理,隔段时间就调用PY.GetPY("部门", False, 3)写入表格,新增了10W行记录,没有发现有问题。会不会是其它代码逻辑影响了?

ReplaceFor语句会不会在异步里使用?会不会有异步同时出现了新增和ReplaceFor的可能?

 回到顶部