Câu trả lời:
Để 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:setup
khô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:setup
với Rails 4. Nó gây ra Couldn't create database
lỗi cho bạn (vì cơ sở dữ liệu đã được tạo bằng heroku pg:reset
lệ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:reset
không hoạt động thông qua heroku run rake
. Bạn phải sử dụng pg:reset
thay thế.
Thông tin thêm có thể được tìm thấy trong tài liệu của Heroku:
SHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
heroku pg:reset DATABASE
heroku pg:reset DATABASE --confirm appname
Heroku đã từ chối --db
tù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_DATABASE
như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
SHARED_DATABASE
Để 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
heroku run rake db:migrate
không còn tạo lại cơ sở dữ liệu
Hiện tại, tức là. Cách làm năm 2017 là:
heroku pg:reset DATABASE
https://devcenter.heroku.com/articles/heroku-postgresql#pg-reset
heroku run rake db:migrate db:seed
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
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!
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
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.
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
Đâ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
Trong trường hợp bạn thích sử dụng Heroku Web-site:
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_name
và database_url
, bạn nên chạy
heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart
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
Tôi luôn luôn làm điều này với 'heroku pg: reset DATABASE'.
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