Cara mengosongkan basis data Heroku

355

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

swimfar
sumber

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

Shaun
sumber
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
Dave Sag
sumber
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
George Yacoub
sumber
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
Syed Ehtsham Abbas
sumber
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!

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

The lengkap Jawabannya adalah (untuk pengguna dengan multi-db):

heroku pg: info - yang keluaran

=== HEROKU_POSTGRESQL_RED <- ini adalah Status
Dasar DB Plan yang
tersedia

heroku pg: reset HEROKU_POSTGRESQL_RED --confirm app_name

Informasi lebih lanjut ditemukan di: https://devcenter.heroku.com/articles/heroku-postgresql

Alvin K.
sumber
8

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

jstnno
sumber
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
mmarqueti
sumber
6

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

drop schema public cascade;
create schema public;
manish_s
sumber
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

Luís Ramalho
sumber
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
Flavio Wuensche
sumber
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
Ronny Kibet
sumber
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

KIO
sumber
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
RileyE
sumber
1

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

heroku pg: reset --confirm-nama basis data

Charles Skariah
sumber
0

Saya selalu melakukan ini dengan one-liner 'heroku pg: reset DATABASE'.

Mark Locklear
sumber
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
Dmitriy Gusev
sumber