環境
Vagrant + Ubuntu 16.04.5 LTS
Rails 5.2.4.2
ruby 2.5.1p57
はじめに
rails db:createした後に、rails db:dropをすると、下記のエラーが出た時のトラブルシューティング
$ rails db:drop
Text file busy @ apply2files - /vagrant/test03/db/development.sqlite3
Couldn't drop database 'db/development.sqlite3'
rails aborted!
Errno::ETXTBSY: Text file busy @ apply2files - /vagrant/test03/db/development.sqlite3
/vagrant/test03/bin/rails:9:in `<top (required)>'
/vagrant/test03/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:drop:_unsafe
(See full trace by running task with --trace)
内容
どうも、Railsのバグらしく、Vagrant環境で、データベースがsqlite3の場合に発生するようです。
同じVagrant環境でも、postgresqlの場合は発生しませんでした。(確認済)
sqlite3のデータベースファイルを直接削除して対応するしかないようです。
rm db/development.sqlite3
rm db/test.sqlite3
なお、下記コマンドでも同じエラーが出ます。
rails db:migrate:reset
rails db:create 、rails db:migrateを連続して、1コマンドつづ打っていくしかないようです。
参考URL
https://teratail.com/questions/67393
https://qiita.com/totechite/items/d4b7f97372881d1d7a25