Đặt lại cơ sở dữ liệu (thanh lọc tất cả), sau đó chọn cơ sở dữ liệu


159

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:



160

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:

  1. rake db:reset: tải từ lược đồ.rb
  2. rake db:drop db:create db:migrate db:seed: tải từ di chuyển

Hã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

Cảm ơn đã nhắc nhở mọi người tắt bất kỳ máy chủ nào để đảm bảo DB được thả đúng cách.
aardvarkk

6

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 ...


thông minh, tái tạo mọi thứ từ đầu mọi lúc mọi nơi đối với tôi
m02ph3u5

5

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


0

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 .

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.