Errno :: ETXTBSY:文本文件busy @ unlink_internal

错误:

Errno :: ETXTBSY:文本文件busy @ unlink_internal – /home/vagrant/shared/sample_app/db/test.sqlite3 /home/vagrant/shared/sample_app/test/test_helper.rb:3:in ' /home/vagrant/shared/sample_app/test/helpers/static_pages_helper_test.rb:1:in ‘任务:TOP =>测试:运行=>测试:单位(通过使用–trace运行任务查看完整跟踪)

解决方法:

该错误与Vagrant(或VirtualBox)自定义共享文件夹有关。 我无法弄清楚如何解决它,但有一个解决方法。 我没有使用vagrantfile中定义的vagrant自定义共享文件夹(〜/ shared / sample_app)而是将app文件夹移动到VM根目录(/ vagrant)内的标准共享文件夹。 现在我仍然在我的主机中获得文件同步,问题就消失了。


更新1

今天达成了另一个结论。 每次bundle exec rake db:migraterails generate migration都会执行错误将返回。

另一种解决方法
1 – 删除test.sqlite3文件。
2 – 复制development.sqlite3文件
3 – 粘贴并将名称更改为test.sqlite3

* – 刚刚迁移进行测试,这似乎是一个永久的解决方案。

将数据库文件移到vagrant共享之外,例如移动到/ tmp。

编辑database.yml:

 development: <<: *default database: /tmp/project/development.sqlite3 test: <<: *default database: /tmp/project/test.sqlite3