Có một lệnh rake để xóa sạch dữ liệu trong các bảng cơ sở dữ liệu?
Làm cách nào để tạo một tập lệnh db: seed để điền trước dữ liệu vào các bảng của tôi?
Có một lệnh rake để xóa sạch dữ liệu trong các bảng cơ sở dữ liệu?
Làm cách nào để tạo một tập lệnh db: seed để điền trước dữ liệu vào các bảng của tôi?
Câu trả lời:
Tôi sử dụng các rake db:reset
giọt và sau đó tạo lại cơ sở dữ liệu và bao gồm tập tin seed.rb của bạn.
http://guides.rubyonrails.org/migations.html#resetting-the-database
Bạn có thể xóa mọi thứ và tạo lại cơ sở dữ liệu + hạt giống bằng cả hai:
rake db:reset
: tải từ lược đồ.rbrake db:drop db:create db:migrate db:seed
: tải từ di chuyểnHãy chắc chắn rằng bạn không có kết nối nào với db (máy chủ rails, máy khách sql ..) hoặc db sẽ không bị hủy.
lược đồ.rb là một ảnh chụp nhanh về trạng thái hiện tại của cơ sở dữ liệu của bạn được tạo bởi:
rake db:schema:dump
Nếu bạn không muốn bỏ và tạo lại toàn bộ shebang chỉ để tải lại dữ liệu của mình, bạn có thể sử dụng MyModel.destroy_all
(hoặc delete_all
) trong tệp seed.db để xóa bảng trước khi MyModel.create!(...)
câu lệnh của bạn tải dữ liệu. Sau đó, bạn có thể làm lại db:seed
hoạt động nhiều lần. (Rõ ràng, điều này chỉ ảnh hưởng đến các bảng bạn đã tải dữ liệu vào chứ không phải các bảng còn lại.)
Có một "hack bẩn" tại https://stackoverflow.com/a/14957893/4553442 để thêm một hoạt động "khử hạt giống" tương tự như di chuyển lên và xuống ...
Kể từ Rails 5, rake
công cụ dòng lệnh đã được đặt biệt danh như rails
bây giờ
rails db:reset
thay vì rake db:reset
cũng sẽ làm việc tốt
Bạn có thể sử dụng rake db:reset
khi bạn muốn bỏ cơ sở dữ liệu cục bộ và bắt đầu làm mới với dữ liệu được tải từ đó db/seeds.rb
. Đây là một lệnh hữu ích khi bạn vẫn đang tìm ra lược đồ của mình và thường cần thêm các trường vào các mô hình hiện có.
Khi lệnh reset được sử dụng, nó sẽ thực hiện như sau: Thả cơ sở dữ liệu: rake db:drop
Tải lược đồ: rake db:schema:load
Seed the data:rake db:seed
Nhưng nếu bạn muốn loại bỏ hoàn toàn cơ sở dữ liệu của mình, bạn có thể sử dụng rake db:drop
. Bỏ cơ sở dữ liệu cũng sẽ loại bỏ bất kỳ xung đột lược đồ hoặc dữ liệu xấu. Nếu bạn muốn giữ dữ liệu bạn có, hãy nhớ sao lưu dữ liệu trước khi chạy lệnh này.
Đây là một bài viết chi tiết về các lệnh cơ sở dữ liệu cào quan trọng nhất .