運用データベースを削除して、新たに起動できるようにします。 Rails 5 from Rails 4にアップグレードすると、本番データベースが誤って削除されないように保護されます。_rake db:reset
_。
_/app# rake db:reset
ActiveRecord::SchemaMigration Load (1.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
(1.6ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", :environment]]
ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
(0.3ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", :environment]]
ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
(0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", :environment]]
rake aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
/usr/local/bundle/gems/activerecord-5.0.0.1/lib/active_record/tasks/database_tasks.rb:51:in `check_protected_environments!'
/usr/local/bundle/gems/activerecord-5.0.0.1/lib/active_record/railties/databases.rake:11:in `block (2 levels) in <top (required)>'
/usr/local/bundle/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:reset => db:drop => db:check_protected_environments
(See full trace by running task with --trace)
_
環境変数DISABLE_DATABASE_ENVIRONMENT_CHECK = 1をコマンドに追加すると機能するはずですが、機能しません。実行しても何もしません。
_<606723-x9dh4:/app# DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rake db:reset
ActiveRecord::SchemaMigration Load (1.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
_
誰が私が間違っているのか知っていますか?ヘルプに感謝します!
更新:
サーバーはkubernetesを使用して展開されます。サーバーが実行されているため、データベースをリセットできないと推測しています。
私のために働いたこれを試してください:
Rails_ENV=production rake db:drop DISABLE_DATABASE_ENVIRONMENT_CHECK=1
一行で。
本番データベースをローカルにダンプするときにも発生します。ローカルマシンで削除する場合は、bin/Rails db:environment:set Rails_ENV=development
を設定し、rake db:drop
の後に設定する必要があります
Rakeコマンドの実行 に関するHerokuのドキュメントから:
Db:resetタスクはサポートされていません。 Herokuアプリには、データベースをドロップおよび作成する権限がありません。代わりにheroku pg:resetコマンドを使用してください。
そのため、Rails
またはrake db:reset
、 これを試して:
heroku pg:reset
少し遅れる可能性がありますが、standart Rails wayでドロップに失敗した場合、uは常にpsql --u your_user
のようなpsqlを使用できます
次に、パスワードタイプ\l
を入力して、すべてのデータベースをリストします。私の場合、psqlは単一のテーブルを削除することを拒否し、「testdb」などの追加のdbを作成し、\c testdb
と入力して接続を確立し、drop database 'olddb_name';
を入力してからcreate database 'olddb_name';
とそのできた!
まあ、これは古い投稿ですが、将来の参考のために、あなたはすることができます
rake db:migrate VERSION=0
その後
rake db:migrate
以下のショットをお願いできますか?
Rails_ENV=production rake db:drop
Rails_ENV=production rake db:create
これは古い方法ですが、データベースを初期レベルにリセットするために使用した方法です。