3
2

More than 1 year has passed since last update.

Vagrant環境でRailsアプリケーションのDBを削除しようとすると、Errno::ETXTBSY: Text file busy @ apply2filesのエラーが発生した。

Last updated at Posted at 2021-11-08

表題の通り、Vagrant環境で作成したRailsアプリケーションでデータベースを削除しようとした際にエラーが発生しました。
ググってみると海外の記事だったり、曖昧な表現の記事が多かったため、自分なりに手順をまとめました。

実行環境
- Windows10 20H2
- Vagrant 2.2.18
- Ubuntu 20.04.3 LTS

データベースの削除

以下のコマンドを使うと、データベースを削除することが出来るので実行します。

$rails db:drop

rails_drop.png
Couldn't drop database 'db/development.sqllite3'
出たわねっ!
正直何かしら出る気しかしませんでした。エラー読み解いていきます。

Errno::ETXTBSY: Text file busy @ apply2files - /home/vagrant/workspace/<(アプリ名>/db/development.sqlite3

このエラーは、Vagrantfile内で指定している共有フォルダ内でデータベースファイルを削除しようとしたため発生します。
データベースファイルとは、ここでいうところの "development.sqlite3" です。

それぞれの環境によって詳細は異なりますが、Vagrantfileには以下のような記載があるかと思います。
sharefolder.PNG
1つ目の” ”がWindowsから見たパス、2つ目の" "が仮想環境(Ubuntu等)から見たパスになります。
つまり、先程のエラーの意味は、私の環境だと"/home/vagrant/workspace/"より深い階層に "development.sqlite3" があるとエラーになります。

今回、私は "/home/vagrant" に新規でtempフォルダを作成し、tempフォルダの中へデータベースファイルを移動させました。

[移動元] /home/vagrant/workspace/<(アプリ名>/db
vag-db3.PNG

[移動先] /home/vagrant/temp
キャプチャ.PNG

次に、/config/database.yml にデータベースファイルを指定する設定箇所があります。
該当箇所を新しく作ったtempフォルダ内のデータベースファイルを指定します。
yml.PNG

これでデータベースを削除する準備が出来ました。
もう一度、データベースを削除するコマンドを実行します。

$rails db:drop

result.PNG
今度は無事にデータベースが削除されました。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2