【问题标题】:DatabaseFileLockedException driving me crazyDatabaseFileLockedException 让我发疯
【发布时间】:2010-08-29 15:04:51
【问题描述】:

我在这里遵循示例:http://developer.db4o.com/Forums/tabid/98/aft/10114/Default.aspx 使用 HttpModule 使用 db4o 设置我的 MVC2 应用程序。我还打开了一个 LINQPad 实例,以便在开发时查询数据。 Web 应用程序似乎很有吸引力,但 LINQPad 不断收到 DatabaseFileLockedExceptions,直到我关闭 Web 服务器。

正如我所说,我实际上是逐字使用 Gamlor 的 HttpModule(使用 ClientServer 而不是嵌入式是唯一的区别),这是我的 LINQPad 代码:

01  void Main() 
02  { 
03      using(var server = Db4oClientServer.OpenServer(db4opath, 0)) 
04      { 
05          using(var db = server.OpenClient()){ 
06              var result = (from Object o in db select o); 
07              result.Dump(); 
08          } 
09      } 
10  } 
11    
12  private string db4opath = @"C:\blah\blah\blah\blah.db4o";

如果网络服务器没有运行,LINQPad 代码可以正常工作。

我做错了什么?

【问题讨论】:

  • 你能确定哪个文件被锁定了吗?网络服务器是否在您尝试连接时锁定了数据库文件? ProcMon 或 FileMon,可能与 ProcExp 的句柄侦听功能相结合,在这里可能很有用。
  • 是的,在这种情况下只有一个文件,“blah.db4o”。我很确定网络应用程序正在锁定 LINQPad,但它不会锁定其他网络线程,所以我认为我没有正确关闭文件或其他什么......

标签: asp.net-mvc asp.net-mvc-2 httpmodule db4o linqpad


【解决方案1】:

当您打开 db4o 数据库时,它会锁定数据库文件以防止损坏。这意味着当您的服务器正在运行时,数据库文件被锁定,没有其他进程可以访问它。 (是的,有一种方法可以禁用它,但这几乎肯定会损坏数据库)

您的网络服务器是否也在运行客户端服务器模式?如果是这种情况,您可以连接正在运行的 db4o-instance。也可以先尝试连接,失败后再直接打开服务器?

如果您只在 ASP.NET 应用程序中使用嵌入式客户端服务器,您可以将其更改为真正的客户端服务器以进行调试。 ASP.NET 只使用嵌入式客户端。但它可以让您与 LINQ-Pad 连接。

评论答案:

您需要打开一个fully server,它支持通过网络连接的客户端。例如:

// in your application
int PortNumber = 8888;
using(var server = Db4oClientServer.OpenServer("database.db4",PortNumber))
{
     server.GrantAccess("debug-user","debug-pwd");

     // application uses embedded client:
     using(var container = server.OpenClient())
     {
          // your application does stuff
     }

}

然后在 LINQPad 中:

using(var client = Db4oClientServer.OpenClient("localhost",8888,"debug-user","debug-pwd"))
{
     // do stuff

}

【讨论】:

  • 我在 Web 应用程序和 LINQPad 中都使用客户端/服务器。如果我没有对服务器对象的引用,如何从 LINQPad 连接到 db4o 运行实例?
猜你喜欢
  • 2011-05-30
  • 2012-11-02
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 2012-03-14
  • 2021-04-20
相关资源
最近更新 更多