2012-11-02 58 views
0

我不断收到错误消息:Rails:锁定的数据库? - sqlite3的:: BusyException:

SQLite3::BusyException: database is locked: INSERT INTO "users" ("created_at", "email", "name", "password_digest", "updated_at") VALUES (?, ?, ?, ?, ?) 

当我试图执行代码:

@user = User.new(:name => "User1", :email => "[email protected]", :password => "password", :password_confirmation => "password") 
@user.save 

是否与调用save创建用户后的问题?我需要暂停吗?如果是这样,我该如何设置/获取数据库变量。

我不知道这里出了什么问题。 User变量被创建得很好,因为我可以输出@user变量的属性,如果我删除保存功能。我只是假设我正在做一些非常错误的事情。我知道我不应该硬编码一个用户,但我正在做测试。

这是怎么回事?

编辑:

我试图drop我的数据库,但抱怨sqlite3的文件丢失。但是,当我导航到它所投诉的确切路径时,这些文件正在ls下列出。

我假设这是我的问题。这是什么意思?

回答

3

您是否在尝试在Rails服务器运行时执行此操作?

或者您是否尝试过使用SQLite数据库浏览器等工具手动插入或删除表上的行?

Sqlite具有较差的并发支持,任何抛出数据库的操作都会抛出Busy异常。

如果错误继续发生,并且数据库中的数据不是那么重要,只需删除数据库并再次迁移即可。错误应该消失。

+0

它告诉我,我无法删除当前数据库,因为它无法找到test.sqlite3或development.sqlite3文件,即使当我导航到其抱怨的确切路径时,文件显然也存在。我认为这可能与我的问题有关?这意味着什么? – RileyE

+0

啊哈!这确实有帮助。我不能完全记得我是如何删除并重新迁移的,但它涉及评论和取消注释我的database.yml文件中的测试说明并执行耙动作。这只是拍摄和瞄准后来的战术,但它允许我重置我的数据库,它现在正在工作。谢谢! – RileyE