Làm thế nào để làm trống cơ sở dữ liệu Heroku


355

Tôi đang làm việc trên ứng dụng web Ruby on Rails 3 trên Heroku. Làm thế nào để tôi làm trống cơ sở dữ liệu?

Câu trả lời:


689

Để hủy cơ sở dữ liệu, nếu bạn đang sử dụng SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

Bây giờ để tạo lại cơ sở dữ liệu không có gì trong đó:

$ heroku run rake db:migrate  

Để điền cơ sở dữ liệu với dữ liệu hạt giống của bạn:

$ heroku run rake db:seed

---HOẶC LÀ---

Bạn có thể kết hợp hai hành động cuối cùng ( di chuyển & hạt giống ) thành một hành động bằng cách thực hiện điều này:

$ heroku run rake db:setup

Chỉnh sửa 2014-04-18: rake db:setupkhông hoạt động với Rails 4, nó không thành công với a Couldn't create database error.

Chỉnh sửa 2014-10-09: Bạn có thể sử dụng rake db:setupvới Rails 4. Nó gây ra Couldn't create databaselỗi cho bạn (vì cơ sở dữ liệu đã được tạo bằng heroku pg:resetlệnh). Nhưng nó cũng tải lược đồ cơ sở dữ liệu và hạt giống của bạn sau thông báo lỗi.

Bạn có thể làm điều này với khá nhiều lệnh cào, nhưng vẫn có ngoại lệ. Ví dụ, db:resetkhông hoạt động thông qua heroku run rake. Bạn phải sử dụng pg:resetthay thế.

Thông tin thêm có thể được tìm thấy trong tài liệu của Heroku:

Chạy lệnh Rake

Đặt lại DB Postgres


21
Cảm ơn bạn. Trên thực tế, "heroku pg: reset --db SHARED_DATABASE_URL" đã thực hiện thủ thuật này. Nhưng bạn đã cho tôi đi đúng hướng.
Jay Godse 17/03/2016

5
@JayGodse Heroku bây giờ nóiSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Phil

6
Trên thực tế, bạn nên kiểm tra lược đồ của mình.rb và bạn nên sử dụng: rake db: lược đồ: load
Amala

18
Bây giờ họ đã thay đổi nó một lần nữaheroku pg:reset DATABASE
Haris Krajina

8
Để tiết kiệm một vài giây thời gian, hãy sử dụngheroku pg:reset DATABASE --confirm appname
GangstaGraham

97

Heroku đã từ chối --dbtùy chọn này, vì vậy bây giờ sử dụng:

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

Hơi khó hiểu một chút vì bạn sử dụng văn bản theo nghĩa đen SHARED_DATABASEnhưng nơi tôi đã viết {the name of your app}thay thế tên ứng dụng của bạn. Ví dụ: nếu ứng dụng của bạn được gọi là my_great_app thì bạn sử dụng:

heroku pg:reset DATABASE_URL --confirm my_great_app

3
nếu bạn chỉ dán bỏ qua bit sau (và bao gồm) - heroku sẽ cho bạn biết nên gõ gì ..
baash05

lệnh hữu ích để lấy tên cơ sở dữ liệu postgres của bạn trên heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool

"Bạn sử dụng văn bản bằng chữ SHARED_DATABASE"? Bạn đang sử dụng DATABASE_URL trong các mẫu mã của mình. Ý bạn là sao?
Michael Durrant

Không. Tôi đã đề cập đến cách sử dụng các từ của câu trả lời khácSHARED_DATABASE
Dave Sag

65

Để hủy cơ sở dữ liệu:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Để tạo lại cơ sở dữ liệu:

$ heroku run rake db:migrate

Để tạo cơ sở dữ liệu:

$ heroku run rake db:seed

** Bước cuối cùng

$ heroku restart

4
Tôi thích câu trả lời này hơn bất kỳ câu hỏi nào khác. Điều này hoạt động hoàn hảo trong kịch bản của tôi trên Heroku, tôi tin rằng nó được đánh giá cao!
Jonathan

Có thể là do heroku đã thay đổi cú pháp của các lệnh này gần đây.
George Yacoub

1
"Heroku restart" là một phần quan trọng mà tôi đã thiếu. Cảm ơn.
Jeremy Nikolai

heroku run rake db:migratekhông còn tạo lại cơ sở dữ liệu
Rots


13

Bây giờ lệnh là

heroku pg:reset DATABASE_URL --confirm your_app_name

bằng cách này bạn có thể chỉ định db mà ứng dụng bạn muốn đặt lại. Sau đó bạn có thể chạy

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

hoặc trực tiếp cho cả hai lệnh trên

heroku run rake db:setup 

Và bây giờ là bước cuối cùng để khởi động lại ứng dụng của bạn

heroku restart

1
Khởi động lại có thể không cần thiết nhưng điểm tốt cho nó một đề cập.
Francisco Quintero

11

Tôi đã liên lạc với bộ phận hỗ trợ của Heroku và họ xác nhận rằng đó là một lỗi với viên ngọc mới nhất (tôi đang sử dụng heroku-2.26.2)

Charlie - chúng tôi nhận thức được vấn đề này với viên ngọc 'heroku' và đang cố gắng khắc phục nó.

Đây là vấn đề nếu bạn quan tâm theo dõi - https://github.com/heroku/heroku/issues/356

Việc hạ cấp xuống phiên bản trước của viên ngọc 'heroku' sẽ giúp ích. Tôi đã sử dụng v2.25.0 trong hầu hết ngày hôm nay mà không gặp vấn đề gì.

Hạ cấp với các lệnh sau:

gem uninstall heroku

gem install heroku --version 2.25.0

Nếu bạn đã cài đặt nhiều đá quý, bạn có thể được trình bày:

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

Chỉ cần gỡ cài đặt # 2 và chạy lại lệnh. Vui sướng!


1
Tất cả các viên đá quý đã bị loại bỏ ngay bây giờ, bạn cần phải loại bỏ chúng và cài đặt công cụ Heroku. toolbelt.heroku.com
Ghoti

9

Các hoàn chỉnh câu trả lời là (cho người dùng với đa db):

heroku pg: thông tin - mà đầu ra

=== HEROKU_POSTGRESQL_RED <- đây là Trạng thái
cơ bản của Kế hoạch DB
có sẵn

heroku pg: đặt lại HEROKU_POSTGRESQL_RED - xác nhận app_name

Thêm thông tin được tìm thấy trong: https://devcenter.heroku.com/articles/heroku-postgresql


8

Bây giờ nó khác với heroku. Thử: heroku pg: đặt lại DATABASE - xác nhận


Đối với một số ứng dụng, bạn vẫn cần sử dụng SHARED_DATABASE
tfwright

7

Hôm nay lệnh

heroku pg:reset --db SHARED_DATABASE_URL

không làm việc cho các kế hoạch được chia sẻ, tôi quyết định sử dụng

heroku pg:reset SHARED_DATABASE

6

Đăng nhập vào DB của bạn bằng cách sử dụng heroku pg:psqlvà gõ các lệnh sau:

drop schema public cascade;
create schema public;

6

Bây giờ cũng có thể thiết lập lại cơ sở dữ liệu thông qua giao diện web của họ.

Truy cập dashboard.heroku.com chọn ứng dụng của bạn và sau đó bạn sẽ tìm thấy cơ sở dữ liệu trong danh mục tiện ích bổ sung, nhấp vào nó và sau đó bạn có thể đặt lại cơ sở dữ liệu.

Đặt lại cơ sở dữ liệu Heroku


5

Kiểm tra phiên bản heroku của bạn. Tôi vừa cập nhật của tôi lên 2.29.0, như sau:

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

Bây giờ bạn có thể chạy:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Sau đó tạo cơ sở dữ liệu của bạn và khởi tạo nó trong một lệnh duy nhất:

heroku run rake db:setup

Bây giờ khởi động lại và thử ứng dụng của bạn:

heroku restart
heroku open

4

Đây là những gì làm việc cho tôi.

1. rõ ràng db.

heroku pg:reset --app YOUR_APP

Sau khi chạy, bạn sẽ phải nhập lại tên ứng dụng của mình để xác nhận.

2.migrate db để tạo lại.

heroku run rake db:migrate  --app YOUR_APP

3.add dữ liệu hạt giống để db.

heroku run rake db:seed --app YOUR_APP

3

Trong trường hợp bạn thích sử dụng Heroku Web-site:

  1. Tới https://postgres.heroku.com/databases
  2. Chọn cơ sở dữ liệu bạn muốn đặt lại
  3. Nhấp vào nút cài đặt ở góc trên bên phải
  4. Nhấp vào "Đặt lại cơ sở dữ liệu" như hiển thị bên dưới:
  5. gõ "RESET" và nhấn ok

thiết lập lại cơ sở dữ liệu heroku


2

Giả sử bạn muốn đặt lại cơ sở dữ liệu PostgreQuery của mình và thiết lập lại, hãy sử dụng:

heroku apps

để liệt kê các ứng dụng của bạn trên Heroku. Tìm tên của ứng dụng hiện tại của bạn ( application_name). Sau đó chạy

heroku config | grep POSTGRESQL

để có được tên của cơ sở dữ liệu của bạn. Một ví dụ có thể là

HEROKU_POSTGRESQL_WHITE_URL

Cuối cùng, được đưa ra application_namedatabase_url, bạn nên chạy

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

1

Nếu bạn đã đăng nhập từ bảng điều khiển, điều này sẽ thực hiện công việc trong công cụ heroku mới nhất,

heroku pg: reset - xác nhận tên cơ sở dữ liệu



0

Giải pháp tốt nhất cho bạn vấn đề sẽ là

heroku pg:reset -r heroku  --confirm your_heroku_app_name

- xác nhận your_heroku_app_name

không bắt buộc, nhưng terminal luôn yêu cầu tôi thực hiện lệnh đó.

Sau lệnh đó, bạn sẽ có db thuần túy, không có cấu trúc và công cụ, sau đó bạn có thể chạy

heroku run rake db:schema:load -r heroku

hoặc là

heroku run rake db:migrate -r heroku
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.