Cara mengosongkan basis data Heroku


355

Saya sedang mengerjakan aplikasi web Ruby on Rails 3 di Heroku. Bagaimana saya mengosongkan basis data?

Jawaban:


689

Untuk menjatuhkan basis data, jika Anda menggunakan SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Sekarang untuk membuat ulang basis data tanpa apa-apa di dalamnya:

$ heroku run rake db:migrate  

Untuk mengisi basis data dengan data seed Anda:

$ heroku run rake db:seed

---ATAU---

Anda dapat menggabungkan dua yang terakhir ( migrasi & benih ) menjadi satu tindakan dengan menjalankan ini:

$ heroku run rake db:setup

Sunting 2014-04-18: rake db:setuptidak berfungsi dengan Rails 4, gagal dengan a Couldn't create database error.

Sunting 2014-10-09: Anda dapat menggunakan rake db:setupdengan Rails 4. Itu memberi Anda Couldn't create databasekesalahan (karena database sudah dibuat menggunakan heroku pg:resetperintah). Tetapi juga memuat skema database Anda dan benih Anda setelah pesan kesalahan.

Anda dapat melakukan ini dengan hampir semua perintah rake, tetapi ada beberapa pengecualian. Misalnya, db:resettidak berfungsi melalui heroku run rake. Anda harus menggunakannya pg:resetsebagai gantinya.

Informasi lebih lanjut dapat ditemukan di dokumentasi Heroku:

Menjalankan Perintah Rake

Atur Ulang Postgres DB


21
Terima kasih. Sebenarnya, "heroku pg: reset --db SHARED_DATABASE_URL" berhasil. Tapi Anda membuat saya pergi ke arah yang benar.
— Jay Godse

5
@JayGodse Heroku sekarang berkataSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
— Phil

6
Sebenarnya Anda harus memeriksa schema.rb Anda dan Anda harus menggunakan: rake db: schema: load
— Amala

18
Mereka telah mengubahnya lagi sekarang adalahheroku pg:reset DATABASE
— Haris Krajina

8
Untuk menghemat beberapa detik waktu, gunakanheroku pg:reset DATABASE --confirm appname
— GangstaGraham

97

Heroku telah menghentikan --dbopsi sekarang, jadi sekarang gunakan:

heroku pg:reset DATABASE_URL --confirm {the name of your app}

Agak membingungkan karena Anda menggunakan teks literal SHARED_DATABASEtetapi di mana saya telah menulis {the name of your app}menggantikan nama aplikasi Anda. Misalnya, jika aplikasi Anda disebut my_great_app maka Anda menggunakan:

heroku pg:reset DATABASE_URL --confirm my_great_app

3
jika Anda hanya menempelkan lewati bit setelah (dan termasuk) - heroku akan memberi tahu Anda apa yang harus
— diketik

perintah yang berguna untuk mendapatkan nama database postgres Anda di heroku: heroku config | grep HEROKU_POSTGRESQL
— zero_cool

"Anda menggunakan teks literal SHARED_DATABASE"? Anda menggunakan DATABASE_URL dalam sampel kode Anda. Apakah maksud Anda itu?
— Michael Durrant

Nggak. Saya merujuk pada penggunaan kata lain dari jawabanSHARED_DATABASE
— Dave Sag

65

Untuk menjatuhkan basis data:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Untuk membuat ulang basis data:

$ heroku run rake db:migrate

Untuk menyemai basis data:

$ heroku run rake db:seed

**Langkah terakhir

$ heroku restart

4
Saya lebih suka jawaban ini daripada yang lain. Ini berfungsi dengan baik dalam skenario saya di Heroku, saya percaya itu sangat di bawah suara!
— Jonathan

Mungkin karena heroku mengubah sintaks dari perintah ini baru-baru ini.
— George Yacoub

1
'heroku restart' adalah satu-satunya kunci yang saya lewatkan. Terima kasih.
— Jeremy Nikolai

heroku run rake db:migratetidak lagi membuat ulang basis data
— Rots


13

Sekarang perintahnya adalah

heroku pg:reset DATABASE_URL --confirm your_app_name

dengan cara ini Anda dapat menentukan db aplikasi yang ingin Anda atur ulang. Maka Anda bisa lari

heroku run rake db:migrate 
heroku run rake db:seed 

atau mengarahkan untuk kedua perintah di atas

heroku run rake db:setup 

Dan sekarang langkah terakhir untuk me-restart aplikasi Anda

heroku restart

1
Memulai kembali mungkin tidak perlu tetapi ada baiknya Anda menyebutkannya.
— Francisco Quintero

11

Saya menghubungi dukungan Heroku, dan mereka mengonfirmasi bahwa itu adalah bug dengan permata terbaru (saya menggunakan heroku-2.26.2)

Charlie - kami menyadari masalah ini dengan permata 'heroku' dan sedang berupaya memperbaikinya.

Inilah masalahnya jika Anda ingin mengikuti - https://github.com/heroku/heroku/issues/356

Menurunkan versi ke permata 'heroku' sebelumnya akan membantu. Saya telah menggunakan v2.25.0 untuk sebagian besar hari ini tanpa masalah.

Turunkan peringkat dengan perintah berikut:

gem uninstall heroku

gem install heroku --version 2.25.0

Jika Anda sudah menginstal banyak permata, Anda mungkin dihadapkan pada:

Select gem to uninstall:
 1. heroku-2.25.0
 2. heroku-2.26.2
 3. All versions

Hapus instalan # 2 dan jalankan kembali perintah. Kegembiraan!


1
Semua permata telah ditinggalkan sekarang, Anda harus menyingkirkannya dan menginstal sabuk alat Heroku. toolbelt.heroku.com
— Ghoti


8

Sekarang berbeda dengan heroku. Coba: heroku pg: reset DATABASE --confirm


Untuk beberapa aplikasi Anda masih perlu menggunakan SHARED_DATABASE
— tfwright

7

Hari ini perintahnya

heroku pg:reset --db SHARED_DATABASE_URL

tidak bekerja untuk rencana bersama, saya memutuskan menggunakan

heroku pg:reset SHARED_DATABASE

6

Login ke DB Anda menggunakan heroku pg:psqldan ketik perintah berikut:

drop schema public cascade;
create schema public;

6

Sekarang juga dimungkinkan untuk mereset basis data melalui antarmuka web mereka.

Pergi ke dashboard.heroku.com pilih aplikasi Anda dan kemudian Anda akan menemukan database di bawah kategori add-ons, klik di atasnya dan kemudian Anda dapat mengatur ulang database.

Reset database Heroku


5

Periksa versi heroku Anda. Saya baru saja memperbarui tambang ke 2.29.0, sebagai berikut:

heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3

Sekarang Anda dapat menjalankan:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Kemudian buat database Anda dan seed itu dalam satu perintah:

heroku run rake db:setup

Sekarang restart dan coba aplikasi Anda:

heroku restart
heroku open

4

Inilah yang bekerja untuk saya.

1.clear db.

heroku pg:reset --app YOUR_APP

Setelah menjalankan itu, Anda harus mengetikkan nama aplikasi lagi untuk mengonfirmasi.

2.migrate db untuk menciptakan kembali.

heroku run rake db:migrate  --app YOUR_APP

3. tambahkan data seed ke db.

heroku run rake db:seed --app YOUR_APP

3

Jika Anda lebih suka menggunakan situs Web Heroku:

  1. Buka https://postgres.heroku.com/databases
  2. Pilih database yang ingin Anda reset
  3. Klik pada tombol pengaturan di sudut kanan atas
  4. Klik "Reset Database" seperti yang ditunjukkan di bawah ini:
  5. ketik "RESET" dan tekan ok

reset database heroku


2

Dengan asumsi Anda ingin mengatur ulang database PostgreSQL Anda dan mengaturnya kembali, gunakan:

heroku apps

untuk mendaftar aplikasi Anda di Heroku. Temukan nama aplikasi Anda saat ini ( application_name). Lalu lari

heroku config | grep POSTGRESQL

untuk mendapatkan nama basis data Anda. Contohnya bisa

HEROKU_POSTGRESQL_WHITE_URL

Akhirnya, diberikan application_namedan database_url, Anda harus lari

heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart

1

Jika Anda masuk dari konsol, ini akan melakukan pekerjaan di heroku toolbelt terbaru,

heroku pg: reset --confirm-nama basis data



0

Solusi terbaik untuk masalah Anda adalah

heroku pg:reset -r heroku  --confirm your_heroku_app_name

--confirmasikan your_heroku_app_name Anda

tidak diperlukan, tetapi terminal selalu meminta saya melakukan perintah itu.

Setelah perintah itu Anda akan memiliki db murni, tanpa struktur dan barang-barang, setelah itu Anda dapat menjalankan

heroku run rake db:schema:load -r heroku

atau

heroku run rake db:migrate -r heroku
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.