0

我不断收到错误消息:

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.

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

4

1 回答 1

3

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

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

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

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

于 2012-11-02T17:52:03.403 回答