首页 新闻 会员 周边 捐助

插入数据的顺序,偶然会变化

0
悬赏园豆:200 [已关闭问题] 关闭于 2016-11-21 10:59

用ef6.1.3偶然会出现以下问题.

要插入的数据有一列,列名为rowid,计算之后赋值,并插入.

本来的值应该是

flowno rowid itemno

[自增]   1        '11001'

[自增]   2        '12001'

[自增]   3        '42001'

而且在EF.Add方法之前,输出了文本,显示的是

rowid itemno

1       '11001'

2       '12001'

3       '42001'

最后数据库里面的数据却变成了

flowno rowid itemno

1111   1        '12001'

1112   2        '42001'

1110   3        '11001'

这个错误偶然会发生,但是不知道到底是什么原因导致.

forhells的主页 forhells | 小虾三级 | 园豆:724
提问于:2016-11-11 14:41
< >
分享
所有回答(7)
0

rowid 是你自己的编号还是什么。

你的描述里面 3:42001,3:11001.前后不一致啊。

你这个可能的问题是数据库排序规则问题。数据库主键id是那个字段,数据库排序规则是什么

czd890 | 园豆:14482 (专家六级) | 2016-11-11 14:48

主键是flowno,自增.数据库排序规则是,Chinese_PRC_CI_AS

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-11 14:54

3那个是手误.

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-11 14:54

@forhells: 

那你更正一下吧,还有

 

最后数据库里面的数据却变成了

1111   1        '12001'

1112   2        '42001'

1110   3        '11001'

怎么也不会是1111,1112,1110的排序。自增的顺序都乱了

支持(0) 反对(0) czd890 | 园豆:14482 (专家六级) | 2016-11-11 14:59

@calvinK: 因为没有排序的情况下,直接查询,结果就这样的.

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-11 15:04

@calvinK: 其它不出问题的数据.不排序的查询,就是正常的从小到大.只有这种出错的数据,默认查询的顺序会变成这样.

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-11 15:05

@forhells: 数据库你主键是自增id对不对。默认数据库排序字段就是自增id这个字段。

这种情况下,数据库自增id字段一定是不会乱的。数据的物理顺序一定是 1110,1111,1112

支持(0) 反对(0) czd890 | 园豆:14482 (专家六级) | 2016-11-11 15:10

@calvinK: 好吧.这个问题,先不纠结.先考虑一下.rowid变化的问题.

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-11 15:39

@forhells: 你先吧你的问题重新编辑一下

你的描述里面 3:42001,3:11001.前后不一致啊。

这都是错误的,怎么看是什么地方出问题了呢

支持(0) 反对(0) czd890 | 园豆:14482 (专家六级) | 2016-11-11 15:52
0

这只能说明你修改过ef获取的数据,然后又不小心被ef给savechange了

刘宏玺 | 园豆:14020 (专家六级) | 2016-11-11 15:45

保存的时候,不会修改ef获取的数据.

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-12 07:35

@forhells: 也许是你使用了异步的savechange也不好说

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-11-12 13:51
0

把自增列加个索引,或者也放入主键里面试试。

清海扬波 | 园豆:825 (小虾三级) | 2016-11-11 16:12
0

应该还是自己的逻辑问题。

CodeHsu | 园豆:5668 (大侠五级) | 2016-11-11 16:33

这是一个偶然问题.如果是逻辑问题,那就能重显,现在是没有办法重显.

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-12 07:36
0

一直找不到问题的话,我建议从多线程,异步的方面考虑

树形图 | 园豆:4 (初学一级) | 2016-11-14 09:18
0

flowno rowid itemno

1111   1        '12001'

1112   2        '42001'

1110   3        '11001'

你flowno的自增是对的,'11001'是第一个被插入的,紧接着是'12001',最后是'42001',问题是查询的时候出现的,你自增字段的类型是什么?

晓菜鸟 | 园豆:2594 (老鸟四级) | 2016-11-15 13:58

问题是rowid变了,这个是外面传进来的值.在插入之前,日志里面是正常的.自增字段是int

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2016-11-16 08:47
0

楼主,我也遇到介个焖题了,你是怎么解决哒?

Eysa | 园豆:62 (初学一级) | 2018-01-12 13:35

不晓得是不是版本的问题。实在不行就先nosql,后sql,sql并发不高的情况下,应该不会出此题了。

支持(0) 反对(0) forhells | 园豆:724 (小虾三级) | 2018-04-05 08:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册