错误:
Errno :: ETXTBSY:文本文件繁忙@ unlink_internal - /home/vagrant/shared/sample_app/db/test.sqlite3
/home/vagrant/shared/sample_app/test/test_helper.rb:3:in <top (required)>'
/home/vagrant/shared/sample_app/test/helpers/static_pages_helper_test.rb:1:in
'
任务:TOP =&gt; test:run =&gt;测试:单位
(通过使用--trace运行任务查看完整跟踪)
答案 0 :(得分:4)
解决方法:强>
该错误与Vagrant(或VirtualBox)自定义共享文件夹有关。我无法弄清楚如何解决它,但有一个解决方法。我没有使用 vagrantfile 中定义的流浪者自定义共享文件夹(〜/ shared / sample_app),而是将app文件夹移动到VM根目录中的标准共享文件夹<强>(/流浪)即可。现在我仍然在我的主机中获得文件同步,问题就消失了。
更新1
今天达成了另一个结论。
每次执行bundle exec rake db:migrate
或rails generate migration
时,错误都会返回。
另一种解决方法
1 - 删除 test.sqlite3 文件
2 - 复制development.sqlite3文件
3 - 粘贴并将名称更改为test.sqlite3
* - 刚刚迁移进行测试,这似乎是一个永久的解决方案。
答案 1 :(得分:4)
将数据库文件移到vagrant share之外,例如移动到/ tmp。
编辑database.yml:
development:
<<: *default
database: /tmp/project/development.sqlite3
test:
<<: *default
database: /tmp/project/test.sqlite3