0

我在 C# 中使用 MongoDB 驱动程序,并使用 GridFS 存储视频文件。
我像录制流一样连续存储文件,并且偶尔(可能在编写过程中)我要求“播放”一个文件。
在某些情况下,在播放文件的那部分会出现问题:
1. 打开相关的 GridFS 文件流。
2. 数据读取正常。
3. GridFS 文件流已关闭 -> 抛出 WriteConcernException 并包含以下详细信息:

WriteConcern detected an error 'E11000 duplicate key error index:
ElSightRecs.fs.chunks.$files_id_1_n_1  dup key: { :
ObjectId('536243c4c449203a24a8f3b2'), : 2656 }'. 
(Response was { "err" : "E11000 duplicate key error index: 
ElSightRecs.fs.chunks.$files_id_1_n_1  dup key: { : 
ObjectId('536243c4c449203a24a8f3b2'), : 2656 }", "code" : 11000, "n" : 0,
"connectionId" : 1111, "ok" : 1.0 }).

`

当我所做的只是关闭文件流时,为什么会出现任何写入错误?

4

2 回答 2

0

@RoeeK,关闭连接可能是寻求超出文件长度的预期行为。

但是,我担心您遇到的错误。你能用一些更小的示例代码重新生成它吗?如果是这样,你能分享一下吗?

在您的错误片段中,您是否对 _id = '536243c4c449203a24a8f3b2' 的文件进行了读取/执行操作?

于 2014-05-01T16:37:58.300 回答
0

好吧,我不确定这是否是 MongoDB 驱动程序中的错误,但我发现了问题。
我打开了 GridFS 文件,OpenRead()所以我认为我受到了很好的保护。显然不是。
我有一个错误,它将 Seek 调用到高于文件长度的位置。这导致了关闭问题......
不知道为什么,不知道是谁......但也许其他人可以使用这个提示:)

于 2014-05-01T15:03:23.277 回答