【问题标题】:what does 'safely' mean in an ActiveRecord exception? ActiveRecord::StatementInvalid: [safely] SQLite3::BusyException: database is lockedActiveRecord 异常中的“安全”是什么意思? ActiveRecord::StatementInvalid: [安全] SQLite3::BusyException: 数据库被锁定
【发布时间】:2021-02-16 04:34:23
【问题描述】:

我在生产中使用带有 rails 6 的 sqlite3,我收到以下错误:ActiveRecord::StatementInvalid: [safely] SQLite3::BusyException: database is locked

我可以在 Rollbar 中看到错误,但在 log/production.log 中看不到。

[safely] 在这种情况下是什么意思?这是否意味着 Rails 在用户没有注意到的情况下设法处理了这个错误(可能是通过数据库超时)?

为什么我在 Rollbar 中看到此错误,但在日志文件中没有?

我尝试在网上搜索解释并在 Rails 代码中查找,但无济于事 - 我找不到“安全”的解释。

【问题讨论】:

  • database is locked 表示您有 rails crails s 在终端中运行。
  • 请勿在生产中使用sqlite。曾经。 postgresql 或 mysql 存在

标签: ruby-on-rails sqlite activerecord


【解决方案1】:

在通过 Agile Rails 6 进行第一次测试后发现此错误消息,我在这里能找到的所有建议(将超时增加到 5000,使用 console -s 命令等)都没有用

但是我在休息后第二次阅读这本书并获得了一个旧应用程序(在 Ruby 2.6.6 中创建)进行比较,尽管使用相同的数据库 gems 和配置,所有测试都通过了这里,所以我找到了它们之间的唯一区别

所以,转到 test\test_helper.rb 并注释以“parallelize”开头的字符串

# parallelize(workers: :number_of_processors, with: :threads)

希望它有所帮助,但是是的,也许选择另一个数据库是最好的选择

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2011-08-24
    • 2017-02-07
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2011-09-26
    • 2011-11-01
    相关资源
    最近更新 更多