Cách quay lại chỉ một bước bằng cách sử dụng rake db: di chuyển


196

Sau khi thêm tệp di chuyển vào db/migratethư mục và chạy rake db:migrate, tôi muốn quay lại bước trước, tôi nghĩ sử dụng VERSION=nlà cách phù hợp để làm điều đó, nhưng tôi không biết giá trị chính xác của n để sử dụng. Có lệnh nào để kiểm tra giá trị n hiện tại không?

Sẽ thật tuyệt nếu ai đó có thể cung cấp hướng dẫn đầy đủ về cách sử dụng rake db:migrate.

Câu trả lời:


355

Cho người mới bắt đầu

rake db:rollback sẽ giúp bạn trở lại một bước

sau đó

rake db:rollback STEP=n

Sẽ đưa bạn quay lại ndi chuyển trong đó nsố lần di chuyển gần đây bạn muốn quay lại.

Tham khảo thêm ở đây .


95

Quay trở lại di chuyển gần đây nhất:

rake db:rollback

Quay trở lại các nlần di chuyển gần đây nhất:

rake db:rollback STEP=n

Bạn có thể tìm thấy hướng dẫn đầy đủ về việc sử dụng các tác vụ di chuyển Rails để cào trên Hướng dẫn Rails để chạy di chuyển .


Dưới đây là một số:

  • rake db:migrate - Chạy tất cả các di chuyển chưa được chạy
  • rake db:migrate VERSION=20080906120000 - Chạy tất cả các di chuyển cần thiết (lên hoặc xuống) để đến phiên bản đã cho
  • rake db:migrate RAILS_ENV=test - Chạy di chuyển trong môi trường nhất định
  • rake db:migrate:redo - Quay lại một lần di chuyển và chạy lại
  • rake db:migrate:redo STEP=n- Quay trở lại các lần ndi chuyển cuối cùng và chạy lại chúng
  • rake db:migrate:up VERSION=20080906120000- Chạy upphương thức cho di chuyển đã cho
  • rake db:migrate:down VERSION=20080906120000- Chạy downphương thức cho di chuyển đã cho

Và để trả lời câu hỏi của bạn về nơi bạn nhận được số phiên bản của di chuyển từ:

Phiên bản là tiền tố số trên tên tệp của di chuyển. Ví dụ: để di chuyển sang phiên bản 20080906120000 chạy

$ rake db:migrate VERSION=20080906120000

(Từ Chạy di chuyển trong Hướng dẫn Rails)


2
Khi rake db: rollback không hoạt động để quay lại lần di chuyển gần đây nhất, tôi đã phải sử dụng rake db: di chuyển VERSION = <ngày phiên bản thứ hai cuối cùng> và nó hoạt động tốt
Omni

8

Cách tốt nhất là chạy Di chuyển cụ thể một lần nữa bằng cách sử dụng xuống hoặc lên (trong đường ray 4. Thay đổi)

rails db: di chuyển: lên VERSION = dấu thời gian

Bây giờ làm thế nào bạn có được dấu thời gian. Đi đến con đường này

/ db / di chuyển

Xác định tệp di chuyển mà bạn muốn Revert.pick dấu thời gian từ tên tệp đó.


Trong khi điều này không trả lời câu hỏi, nó thực sự là cách tốt nhất. Quay ngược lại các bước có thể gây ra lỗi, đặc biệt là khi làm việc trên phần mềm trong một nhóm.
thép

5

Nếu là phiên bản 20150616132425thì sử dụng:

rails db:migrate:down VERSION=20150616132425

1

Những người khác đã trả lời cho bạn cách quay lại, nhưng bạn cũng hỏi làm thế nào bạn có thể xác định số phiên bản di chuyển.

  • rake db:migrate:status đưa ra một danh sách các phiên bản di chuyển, tên và trạng thái của bạn (lên hoặc xuống)
  • Bạn cũng có thể tìm thấy tệp di chuyển, chứa dấu thời gian trong tên tệp, đó là số phiên bản. Di chuyển được đặt trong thư mục:/db/migrate

Nhân tiện, nếu bạn chạy lệnh trạng thái, bạn có thể thấy các dòng như: ********** NO FILE ********** Những lần di chuyển đó không tồn tại trên nhánh hiện tại của bạn nếu bạn sử dụng git
BjarneD
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.