ฉันทำงานกับ webapp ของ Ruby on Rails 3 ใน Heroku ฉันจะล้างฐานข้อมูลได้อย่างไร
ฉันทำงานกับ webapp ของ Ruby on Rails 3 ใน Heroku ฉันจะล้างฐานข้อมูลได้อย่างไร
คำตอบ:
หากต้องการวางฐานข้อมูลหากคุณใช้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:
SHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
heroku pg:reset DATABASE
heroku pg:reset DATABASE --confirm appname
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
SHARED_DATABASE
หากต้องการวางฐานข้อมูล:
$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP
ในการสร้างฐานข้อมูลใหม่:
$ heroku run rake db:migrate
ในการ seed ฐานข้อมูล:
$ heroku run rake db:seed
** ขั้นตอนสุดท้าย
$ heroku restart
heroku run rake db:migrate
ไม่สร้างฐานข้อมูลอีกต่อไป
ปัจจุบันคือ วิธีการทำสิ่งนี้คือ:
heroku pg:reset DATABASE
https://devcenter.heroku.com/articles/heroku-postgresql#pg-reset
heroku run rake db:migrate db:seed
ตอนนี้คำสั่งคือ
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
ฉันติดต่อฝ่ายสนับสนุนของ 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 และรันคำสั่งอีกครั้ง จอย!
สมบูรณ์คำตอบคือ (สำหรับผู้ใช้ที่มีหลาย dB):
heroku pg: ข้อมูล - ผลลัพธ์ใด
=== HEROKU_POSTGRESQL_RED <- นี่คือ สถานะฐานข้อมูล
Plan Plan ที่
มีอยู่
heroku pg: รีเซ็ต HEROKU_POSTGRESQL_RED - ยืนยัน app_name
ข้อมูลเพิ่มเติมพบใน: https://devcenter.heroku.com/articles/heroku-postgresql
ตอนนี้มันแตกต่างกับ heroku ลอง: heroku pg: รีเซ็ต DATABASE - ยืนยัน
วันนี้คำสั่ง
heroku pg:reset --db SHARED_DATABASE_URL
ไม่ทำงานสำหรับแผนที่ใช้ร่วมกันฉันแก้ไขโดยใช้
heroku pg:reset SHARED_DATABASE
เข้าสู่ระบบฐานข้อมูลของคุณโดยใช้
heroku pg:psql
และพิมพ์คำสั่งต่อไปนี้:
drop schema public cascade;
create schema public;
ตอนนี้ก็เป็นไปได้ที่จะรีเซ็ตฐานข้อมูลผ่านเว็บอินเตอร์เฟส
ไปที่dashboard.heroku.comเลือกแอปของคุณแล้วคุณจะพบฐานข้อมูลภายใต้หมวดหมู่ส่วนเสริมคลิกที่มันจากนั้นคุณสามารถรีเซ็ตฐานข้อมูล
ตรวจสอบเวอร์ชั่น 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
นี่คือสิ่งที่ได้ผลสำหรับฉัน
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
ในกรณีที่คุณต้องการใช้เว็บไซต์ Heroku:
สมมติว่าคุณต้องการรีเซ็ตฐานข้อมูล 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
หากคุณเข้าสู่ระบบจากคอนโซลสิ่งนี้จะทำงานในแถบเครื่องมือ heroku ล่าสุด
heroku pg: รีเซ็ต - ยืนยันชื่อฐานข้อมูล
ฉันทำสิ่งนี้เสมอกับ 'heroku pg: reset DATABASE'
ทางออกที่ดีที่สุดสำหรับคุณจะเป็นปัญหา
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