【问题标题】:Rails: Locked DB? - SQLite3::BusyException:Rails:锁定数据库? - SQLite3::BusyException:
【发布时间】:2012-11-03 02:57:30
【问题描述】:

我不断收到错误消息:

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

当我尝试执行代码时:

@user = User.new(:name => "User1", :email => "email@gmail.com", :password => "password", :password_confirmation => "password")
@user.save

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

我不知道这里出了什么问题。 User 变量的创建很好,因为如果我删除了 save 函数,我可以输出 @user 变量的属性。我只是假设我在做一些非常错误的事情。我知道我不应该对用户进行硬编码,但我这样做是出于测试目的。

这是怎么回事?

编辑:

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

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

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

    Sqlite 的并发支持很差,任何使数据库稍微关闭的操作都会引发 Busy 异常。

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

    【讨论】:

    • 它告诉我我无法删除我当前的数据库,因为它找不到 test.sqlite3 或 development.sqlite3 文件,即使当我导航到它抱怨的确切路径时,文件显然在那里。我认为这可能与我的问题有关?这意味着什么?
    • 啊哈!这确实有帮助。我不完全记得我是如何删除和重新迁移它的,但它涉及在我的 database.yml 文件中注释和取消注释测试描述以及执行 rake 操作。它只是射击和瞄准稍后的战术,但它允许我重置我的数据库并且它现在正在工作。谢谢!
    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 2015-06-05
    • 2011-11-01
    • 2023-03-26
    • 2010-09-09
    • 2015-11-22
    相关资源
    最近更新 更多