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:resetgiọ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:seedhoạ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, rakecông cụ dòng lệnh đã được đặt biệt danh như railsbâ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:resetkhi 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 .