質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

0回答

644閲覧

rails db:migrate:reset ができない

退会済みユーザー

退会済みユーザー

総合スコア0

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

1クリップ

投稿2017/12/05 07:00

編集2022/01/12 10:55

rails db:migrate:resetを実行した際、以下の結果が表示されました。

PS D:\Users\Desktop\myblog> rails db:migrate:reset Permission denied @ unlink_internal - D:/Users/Desktop/myblog/db/development.sqlite3 Couldn't drop database 'db/development.sqlite3' rails aborted! Errno::EACCES: Permission denied @ unlink_internal - D:/Users/Desktop/myblog/db/development.sqlite3 bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:drop:_unsafe (See full trace by running task with --trace)

アクセス拒否とのことなのですが、どのようにすればいいのかさっぱりです。。。
開発環境は

  • windows10
  • ruby 2.4.2
  • rails 5.1.4
  • sqlite3 3.21.0

となっています。
また、db/development.sqlite3の中身は空です。

データベースのリセットは、rails db:drop_safeにて出来ているのですが、訳すと安全ではないとの意味なので、これもまたどのように安全ではないのかもわからない状態です。

どなたか知恵をお貸しいただけると幸いです!

※追記
goufさんアドバイスにより、db/development.sqlite3を消して再度マイグレートしてみるも、状況変わらずです…
ただ、入れなおしてからファイルを開こうとすると、『このファイルはバイナリか、非常に大きいか、またはサポートされてないテキストエンコードを使用しているため、表示できません』と出るようになりました(エディタはVSCodeです)。
また、D/Ruby24-x64/bin/内のsqlite3.exeも入れなおしましたが変わりませんでした。

心配なのは、sqlite3.exeは https://sqlite.org/download.html の sqlite-tools-win32-x86-3210000.zip から持ってきたのですが、恐らく32bit用のファイルのため上手いことならないのかもしれないです。

CHERRYさん(編集済み)
更に追加コメントありがとうございます!sqlite3コマンドで開くのでしたか!
改めて実行した結果を以下に載せます!

PS D:\Users\Desktop\myblog> sqlite3 .\db\development.sqlite3 SQLite version 3.21.0 2017-10-24 18:55:49 Enter ".help" for usage hints. sqlite> .dump PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY); INSERT INTO schema_migrations VALUES('20171205061041'); CREATE TABLE IF NOT EXISTS "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL); INSERT INTO ar_internal_metadata VALUES('environment','development','2017-12-05 11:28:50.396134','2017-12-05 11:28:50.396134'); CREATE TABLE IF NOT EXISTS "posts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "body" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL); DELETE FROM sqlite_sequence; COMMIT;

確かに、こうすれば文字化けが起きないですね!勉強になりました!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2017/12/05 10:04

開発環境であるならば、db/development.sqlite3 を削除してしまって、再度 db:migrate するのがいいかもしれません。もしこれを実行された場合に、変化は見られますか?
退会済みユーザー

退会済みユーザー

2017/12/05 11:02

行ってみた結果を上に加筆しましたので、よろしければ回答お願いいたします!
CHERRY

2017/12/05 11:17 編集

マイグレーションは、成功するのですよね? マイグレーションの後で、 SQLite3 コマンドを使って、db/development.sqlite3 の中身を出力したら、正常に出力されるでしょうか?
CHERRY

2017/12/05 11:56

db/development.sqlite3 のファイルは、バイナリファイルなので、テキストエディタでは、開けません。 (cat コマンドもテキストファイルしか表示できません) 無理やり開いて編集・保存するとファイルが壊れる原因になります。
CHERRY

2017/12/05 11:59

コマンドラインで、sqlite3 db/development.sqlite3 と実行すると 「SQLite> 」のプロンプトに変わりますので、そこで、SQLite3 のコマンドを入力します。.dump と入力して、リターンを押すと テーブルの中のデータを全て表示するとおもいます。 詳しいコマンドは、https://sqlite.org/cli.html を参照してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問