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.