วิธีล้างฐานข้อมูล Heroku


คำตอบ:


689

หากต้องการวางฐานข้อมูลหากคุณใช้SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

ตอนนี้เพื่อสร้างฐานข้อมูลโดยไม่มีอะไรในมัน:

$ heroku run rake db:migrate  

ในการเติมฐานข้อมูลด้วยข้อมูลเมล็ดของคุณ:

$ heroku run rake db:seed

---หรือ---

คุณสามารถรวมสองอันสุดท้าย ( โยกย้ายและเริ่มต้น ) เป็นหนึ่งการกระทำโดยดำเนินการดังนี้:

$ heroku run rake db:setup

แก้ไข 2014/04/18: rake db:setupไม่ได้ทำงานกับทางรถไฟ 4 Couldn't create database errorก็ล้มเหลวด้วย

แก้ไข 2014-10-09: คุณสามารถใช้rake db:setupกับ Rails 4 มันทำให้คุณมีCouldn't create databaseข้อผิดพลาด (เพราะฐานข้อมูลถูกสร้างขึ้นแล้วโดยใช้heroku pg:resetคำสั่ง) แต่มันยังโหลดสคีมาฐานข้อมูลและเมล็ดของคุณหลังจากข้อความแสดงข้อผิดพลาด

คุณสามารถทำได้ด้วยคำสั่ง rake ใด ๆ แต่มีข้อยกเว้น ยกตัวอย่างเช่นไม่ทำงานผ่านdb:reset heroku run rakeคุณต้องใช้pg:resetแทน

ข้อมูลเพิ่มเติมสามารถพบได้ในเอกสารของ Heroku:

รันคำสั่งเรค

รีเซ็ตฐานข้อมูล Postgres


21
ขอบคุณ. ที่จริงแล้ว "heroku pg: reset --db SHARED_DATABASE_URL" ได้ทำการหลอกลวง แต่คุณทำให้ฉันไปในทิศทางที่ถูกต้อง
Jay Godse

5
@JayGodse Heroku พูดแล้วSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
ฟิล

6
ที่จริงแล้วคุณควรตรวจสอบใน schema.rb ของคุณและคุณควรใช้: rake db: schema: load
Amala

18
พวกเขาได้เปลี่ยนมันอีกครั้งในขณะนี้คือheroku pg:reset DATABASE
Haris Krajina

8
หากต้องการประหยัดเวลาสองสามวินาทีให้ใช้heroku pg:reset DATABASE --confirm appname
GangstaGraham

97

Heroku เลิกใช้งาน--dbตัวเลือกทันทีดังนั้นให้ใช้:

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

มันค่อนข้างสับสนเพราะคุณใช้ข้อความตัวอักษรSHARED_DATABASEแต่ที่ฉันเขียน{the name of your app}แทนชื่อแอพของคุณ ตัวอย่างเช่นหากแอปของคุณชื่อ my_great_app คุณจะใช้:

heroku pg:reset DATABASE_URL --confirm my_great_app

3
ถ้าคุณเพียงแค่วางข้ามบิตหลังจากที่ (และรวม) - Heroku จะบอกคุณว่าจะพิมพ์ ..
baash05

คำสั่งที่เป็นประโยชน์เพื่อรับชื่อฐานข้อมูล postgres ของคุณใน heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool

"คุณใช้ข้อความตัวอักษร SHARED_DATABASE" คุณกำลังใช้ DATABASE_URL ในตัวอย่างโค้ดของคุณ คุณหมายถึงว่า?
Michael Durrant

Nope ฉันหมายถึงการใช้คำตอบอื่น ๆ ของคำSHARED_DATABASE
เดฟแซก

65

หากต้องการวางฐานข้อมูล:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

ในการสร้างฐานข้อมูลใหม่:

$ heroku run rake db:migrate

ในการ seed ฐานข้อมูล:

$ heroku run rake db:seed

** ขั้นตอนสุดท้าย

$ heroku restart

4
ฉันชอบคำตอบนี้มากกว่าคนอื่น สิ่งนี้ทำงานได้อย่างสมบูรณ์ในสถานการณ์ของฉันใน Heroku ฉันเชื่อว่ามันได้รับการโหวตอย่างสูง!
Jonathan

อาจเป็นเพราะ heroku เปลี่ยนไวยากรณ์ของคำสั่งเหล่านี้เมื่อเร็ว ๆ นี้
George Yacoub

1
'heroku restart' เป็นชิ้นส่วนสำคัญที่ฉันขาดหายไป ขอบคุณ
Jeremy Nikolai

heroku run rake db:migrateไม่สร้างฐานข้อมูลอีกต่อไป
Rots


13

ตอนนี้คำสั่งคือ

heroku pg:reset DATABASE_URL --confirm your_app_name

วิธีนี้คุณสามารถระบุ db ของแอปที่คุณต้องการรีเซ็ต จากนั้นคุณสามารถเรียกใช้

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

หรือโดยตรงสำหรับคำสั่งทั้งสองข้างต้น

heroku run rake db:setup 

และตอนนี้ขั้นตอนสุดท้ายในการรีสตาร์ทแอปของคุณ

heroku restart

1
การเริ่มต้นใหม่อาจไม่จำเป็น แต่เป็นจุดที่ดีที่กล่าวถึง
Francisco Quintero

11

ฉันติดต่อฝ่ายสนับสนุนของ Heroku และพวกเขายืนยันว่าเป็นข้อบกพร่องของอัญมณีล่าสุด (ฉันใช้ heroku-2.26.2)

ชาร์ลี - เราตระหนักถึงปัญหานี้ด้วยอัญมณี 'heroku' และกำลังพยายามแก้ไข

นี่คือปัญหาหากคุณสนใจที่จะติดตาม - https://github.com/heroku/heroku/issues/356

การลดระดับเป็นอัญมณี 'heroku' เวอร์ชั่นก่อนหน้าน่าจะช่วยได้ ฉันใช้ v2.25.0 เป็นส่วนใหญ่ในวันนี้โดยไม่มีปัญหา

ปรับลดรุ่นด้วยคำสั่งต่อไปนี้:

gem uninstall heroku

gem install heroku --version 2.25.0

หากคุณมีหลายอัญมณีติดตั้งแล้วคุณอาจพบกับ:

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

เพียงถอนการติดตั้ง # 2 และรันคำสั่งอีกครั้ง จอย!


1
อัญมณีทั้งหมดเลิกใช้แล้วตอนนี้คุณต้องกำจัดพวกมันออกแล้วติดตั้ง Heroku toolbelt toolbelt.heroku.com
Ghoti

9

สมบูรณ์คำตอบคือ (สำหรับผู้ใช้ที่มีหลาย dB):

heroku pg: ข้อมูล - ผลลัพธ์ใด

=== HEROKU_POSTGRESQL_RED <- นี่คือ สถานะฐานข้อมูล
Plan Plan ที่
มีอยู่

heroku pg: รีเซ็ต HEROKU_POSTGRESQL_RED - ยืนยัน app_name

ข้อมูลเพิ่มเติมพบใน: https://devcenter.heroku.com/articles/heroku-postgresql


8

ตอนนี้มันแตกต่างกับ heroku ลอง: heroku pg: รีเซ็ต DATABASE - ยืนยัน


สำหรับปพลิเคชันบางอย่างที่คุณยังคงต้องใช้ SHARED_DATABASE
tfwright

7

วันนี้คำสั่ง

heroku pg:reset --db SHARED_DATABASE_URL

ไม่ทำงานสำหรับแผนที่ใช้ร่วมกันฉันแก้ไขโดยใช้

heroku pg:reset SHARED_DATABASE

6

เข้าสู่ระบบฐานข้อมูลของคุณโดยใช้ heroku pg:psqlและพิมพ์คำสั่งต่อไปนี้:

drop schema public cascade;
create schema public;

6

ตอนนี้ก็เป็นไปได้ที่จะรีเซ็ตฐานข้อมูลผ่านเว็บอินเตอร์เฟส

ไปที่dashboard.heroku.comเลือกแอปของคุณแล้วคุณจะพบฐานข้อมูลภายใต้หมวดหมู่ส่วนเสริมคลิกที่มันจากนั้นคุณสามารถรีเซ็ตฐานข้อมูล

รีเซ็ตฐานข้อมูล Heroku


5

ตรวจสอบเวอร์ชั่น heroku ของคุณ ฉันเพิ่งอัปเดตของฉันเป็น 2.29.0 ดังต่อไปนี้:

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

ตอนนี้คุณสามารถเรียกใช้:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

จากนั้นสร้างฐานข้อมูลของคุณและ seed ในคำสั่งเดียว:

heroku run rake db:setup

ตอนนี้รีสตาร์ทและลองแอพของคุณ:

heroku restart
heroku open

4

นี่คือสิ่งที่ได้ผลสำหรับฉัน

1. ชัดเจน db

heroku pg:reset --app YOUR_APP

หลังจากเปิดใช้งานคุณจะต้องพิมพ์ชื่อแอปของคุณอีกครั้งเพื่อยืนยัน

2.migrate db เพื่อสร้างใหม่

heroku run rake db:migrate  --app YOUR_APP

3. เพิ่มข้อมูลเมล็ดลงใน db

heroku run rake db:seed --app YOUR_APP

3

ในกรณีที่คุณต้องการใช้เว็บไซต์ Heroku:

  1. ไปที่https://postgres.heroku.com/database
  2. เลือกฐานข้อมูลที่คุณต้องการรีเซ็ต
  3. คลิกที่ปุ่มการตั้งค่าที่มุมขวาบน
  4. คลิก "รีเซ็ตฐานข้อมูล" ที่แสดงด้านล่าง:
  5. พิมพ์ "RESET" แล้วกดตกลง

รีเซ็ตฐานข้อมูล heroku


2

สมมติว่าคุณต้องการรีเซ็ตฐานข้อมูล PostgreSQL ของคุณและตั้งค่าให้ใช้:

heroku apps

เพื่อแสดงรายการแอปพลิเคชันของคุณใน Heroku ค้นหาชื่อแอปพลิเคชันปัจจุบันของคุณ ( application_name) จากนั้นเรียกใช้

heroku config | grep POSTGRESQL

เพื่อรับชื่อฐานข้อมูลของคุณ ตัวอย่างอาจเป็น

HEROKU_POSTGRESQL_WHITE_URL

ในที่สุดได้รับapplication_nameและdatabase_urlคุณควรเรียกใช้

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

1

หากคุณเข้าสู่ระบบจากคอนโซลสิ่งนี้จะทำงานในแถบเครื่องมือ heroku ล่าสุด

heroku pg: รีเซ็ต - ยืนยันชื่อฐานข้อมูล



0

ทางออกที่ดีที่สุดสำหรับคุณจะเป็นปัญหา

heroku pg:reset -r heroku  --confirm your_heroku_app_name

- ยืนยัน your_heroku_app_name

ไม่จำเป็น แต่เทอร์มินัลถามฉันเสมอว่าทำคำสั่ง

หลังจากคำสั่งนั้นคุณจะได้ db บริสุทธิ์โดยไม่มีโครงสร้างและสิ่งหลังจากนั้นคุณสามารถเรียกใช้

heroku run rake db:schema:load -r heroku

หรือ

heroku run rake db:migrate -r heroku
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.