首页 > 解决方案 > Ruby on Rails 测试中的“数据库已锁定”错误消息是什么意思?

问题描述

我正在关注 Hartl 的 Rails 教程并使用 Rails 6。每当我运行测试时,我都会不断收到持续性错误,这些错误似乎是随机弹出的 - 随机,因为连续测试有时会指示不同区域的错误。这些测试也非常非常慢 - 有时 > 30 分钟。有没有人遇到过这个?我可能做错了什么?现在是红鲱鱼:我使用的是 Win 8.1 :)

这些错误消息的共同点是它们都包含“RuntimeErroer:数据库已锁定”消息。这是其中之一:

ERROR["test_email_validation_should_reject_invalid_addresses", 
#<Minitest::Reporters::Suite:0x000000000c9b29c0 @name="UserTest">, 608.7059665989946]
 test_email_validation_should_reject_invalid_addresses#UserTest (608.71s)
RuntimeError: RuntimeError: database is locked

标签: ruby-on-rails

解决方案


很长一段时间以来,我一直在与同样的错误作斗争。它实际上变得如此糟糕,它阻碍了我在 Hartl 的 Rails 教程中真正前进。

编辑:找到了一个更好的答案,它可以简单地解决问题,而不是使用我可能不太了解的设置。

见-> https://stackoverflow.com/a/62730905/10463184

我唯一的贡献是,作为 Windows 用户,我发现注释掉 test/test_help.rb 中的整行...

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

解决了这个问题。尝试链接中建议的设置会导致“需要 UNIXServer (LoadError)”错误。


推荐阅读