我有一个完全空的RavenHQ数据库,它链接到我的Appharbor应用程序。数据库当前使用的空间量是1.1mb,而我的铜牌帐户有25mb可用空间。数据库之前在其中有记录,但我已经在管理工作室中使用“删除集合”删除了它们。
在我第一次调用session.Store(myobject)时,在我调用.SaveChanges()之前,我得到了以下错误。
System.InvalidOperationException: Url: "/docs/Raven/Hilo/AccItems"
Raven.Database.Exceptions.OperationVetoedException: PUT vetoed by Raven.Bundles.Quotas.Triggers.DatabaseSizeQoutaForDocumetsPutTrigger because: Database size is 45,347 KB, which is over the allowed quota of 25,600 KB. No more documents are allowed in.现在,文档肯定没有那么大,所以我不知道这个错误意味着什么,特别是我认为我当时甚至没有命中数据库,因为我还没有通过调用SaveChanges()来关闭会话。有什么想法吗?这是代码本身。
XDocument doc = XDocument.Parse(rawXml);
var accItems = ExtractItemsFromFeed(doc);
using (IDocumentSession session = _store.OpenSession())
{
var dbItems = session.Query<AccItem>().ToList();
foreach (var item in accItems)
{
var existingRecord = dbItems.SingleOrDefault(x => x.Source == x.SourceId == cottage.SourceId);
if (existingRecord == null)
{
session.Store(item);
_logger.Info("Saved new item {0}.", item.ShortName);
}
else
{
existingRecord.ShortName = item.ShortName;
_logger.Info("Updated item {0}.", item.ShortName);
}
session.SaveChanges();
}
} 关于这段代码风格的任何其他评论都将是最受欢迎的,因为我不确定处理“更新现有项或创建不存在的项”场景的最佳方法。
发布于 2012-06-21 23:46:23
这里的答案如下。
RavenHQ支持人员发现数据库确实过大,但在Appharbor品牌的RavenHQ控制面板中报告的大小似乎不正确。我已经用上面发布的代码的前一个错误版本填满了数据库,所以我收到的错误消息实际上是正确的。
在不花钱升级数据库的情况下修复这个问题并不简单,因为不可能缩小数据库。因为我也无法删除我的单一Appharbor/RavenHQ数据库,也无法创建另一个数据库,这让我只能选择创建一个全新的Appharbor应用程序,或者直接向RavenHQ注册一个新帐户。我选择了后者。RavenHQ品牌的控制面板与Appharbor略有不同,因为它具有创建和删除数据库的能力。
所以总结一下:使用RavenHQ作为Appharbor的附加组件似乎没有任何好处--你最好去获取一个适当的免费RavenHQ帐户。
https://stackoverflow.com/questions/10994380
复制相似问题