Làm cách nào để khôi phục quá trình di chuyển trong Rails?

Trong các ứng dụng Rails, đối với các thay đổi liên quan đến cơ sở dữ liệu như tạo bảng, thêm cột, xóa cột, v.v. chúng tôi viết rất nhiều di chuyển

Để chạy các lần di chuyển đó, chúng tôi sử dụng lệnh

> rails db:rollback
0

> rails db:migrate

Nhưng đôi khi, trong khi viết di chuyển, chúng tôi có thể mắc một số lỗi. Để khôi phục những lỗi như vậy, chúng tôi sử dụng

> rails db:rollback
1, khôi phục cơ sở dữ liệu về trạng thái, trước khi di chuyển mới nhất được chạy

> rails db:rollback

Chúng ta cũng có thể chuyển

> rails db:rollback
2 làm biến môi trường cho lệnh này, để chỉ định số lần di chuyển cần hoàn nguyên. Ví dụ: nếu chúng tôi phải hoàn nguyên 3 lần di chuyển mới nhất thì chúng tôi sẽ chạy lệnh sau

> rails db:rollback STEP=3

Nhiều cơ sở dữ liệu

Rails 6 đã thêm hỗ trợ cho nhiều cơ sở dữ liệu

Như vậy chúng ta sẽ có nhiều thư mục tương tự như

> rails db:rollback
3 trong thư mục
> rails db:rollback
4. Chúng ta có thể chuyển một tùy chọn
> rails db:rollback
4 bổ sung trong khi tạo quá trình di chuyển mới và điều này sẽ thêm quá trình di chuyển đó vào thư mục di chuyển của một cơ sở dữ liệu cụ thể

> rails g migration AddUser first_name:string last_name:string --db=secondary

Chúng ta có thể chạy tất cả các lần di chuyển cơ sở dữ liệu trong một lần bằng cách chạy lệnh sau

> rails db:migrate

Nếu chúng ta muốn chạy di chuyển cơ sở dữ liệu cụ thể thì chúng ta có thể chạy lệnh sau

> rails db:migrate
1

Đây

> rails db:rollback
6 là tên của cơ sở dữ liệu

Bây giờ nếu chúng ta muốn hoàn nguyên lần di chuyển mới nhất thì chúng ta có thể chạy lệnh sau

> rails db:rollback

Vì chúng tôi không có cách nào để chỉ định cơ sở dữ liệu nào mà chúng tôi thực sự muốn khôi phục quá trình di chuyển từ đó, nên cuối cùng, nó luôn hoàn nguyên quá trình di chuyển mới nhất của cơ sở dữ liệu chính

Để khắc phục sự cố này, Rails 6. 0. 2. 1 đã thêm hỗ trợ cho tên cơ sở dữ liệu trong lệnh

> rails db:rollback
1 tương tự như
> rails db:rollback
0

> rails db:migrate
6

Bây giờ, nếu chúng ta chạy lệnh

> rails db:rollback
1 mà không có
> rails db:rollback STEP=3
0 cho nhiều ứng dụng cơ sở dữ liệu thì nó sẽ báo lỗi sau

Quay lại cơ sở dữ liệu không hoạt động vào thời điểm đó. Đó là bởi vì Rails không thể tìm thấy tệp di chuyển mới nhất của nó để biết nên chuyển đến tệp nào

Tôi thậm chí đã thử quay lại nhiều bước, nhưng không gặp may

Đã cam kết với Git

Nếu bạn đã cam kết tệp vào lịch sử git của mình, bạn thật may mắn. Lưu trữ mã hiện tại của bạn, khôi phục, sau đó bật lưu trữ của bạn

Có, bạn chỉ cần thực hiện

> rails db:rollback
4 hoặc [
> rails db:rollback
5 nếu đường ray < 5] để khôi phục lần di chuyển mới nhất. Và thực hiện các thay đổi đối với việc di chuyển theo ý muốn

Nhưng lưu ý rằng nếu bạn đã [git] đẩy quá trình di chuyển bị lỗi sang kho lưu trữ dùng chung hoặc đã triển khai, thì bạn nên thực hiện một lần di chuyển bổ sung

Bạn sẽ thường mắc lỗi khi viết mã, vì vậy điều quan trọng là phải biết cách hoàn tác mọi thứ một cách nhanh chóng. Tất nhiên, bạn có thể nhấn ctrl-Z để hoàn tác chỉnh sửa mã cuối cùng của mình, nhưng điều gì sẽ xảy ra khi bạn muốn hoàn tác điều gì đó quan trọng hơn?

đường ray tạo ra

Để hoàn tác lệnh

> rails db:rollback
6, hãy chạy lệnh
> rails db:rollback
7

Ví dụ: giả sử bạn đã chạy

> rails db:migrate
9

Bạn có thể hoàn tác nó với

> rails db:rollback
0

cào db. di chuyển

Giả sử bạn đã chạy di chuyển để áp dụng các thay đổi cho cơ sở dữ liệu, nhưng sau đó nhận ra rằng bạn muốn chỉnh sửa tệp di chuyển trước. Để hoàn tác lần di chuyển cuối cùng, chỉ cần chạy

> rails db:rollback
1

Sau đó, bạn có thể chỉnh sửa tệp và chạy lại

> rails db:rollback
8

[Xem cách khôi phục tệp Di chuyển để khôi phục một lần di chuyển cụ thể hoặc nhiều lần di chuyển. ]

git

Giả sử bạn đã làm hỏng mã của mình [và đã lưu nó] và muốn vứt bỏ tất cả và quay lại cam kết trước đó

Nếu bạn chưa cam kết mã của mình với git, bạn có thể quay lại cam kết trước đó của mình với

> rails db:rollback
2

Giả sử bạn đã cam kết các thay đổi của mình với git, nhưng bạn không chia sẻ mã này với bất kỳ ai. Bạn có thể hoàn tác cam kết cuối cùng này để không có dấu vết của nó với

> rails db:rollback
3

người học

Bạn có thể nhấn ctrl-Z trong trình chỉnh sửa mã Learneroo, nhưng điều gì sẽ xảy ra nếu bạn vô tình đóng một tab có mã trong đó? . Bạn có thể vứt bỏ tất cả mã của mình bằng cách nhấp vào "Đặt lại". Và bạn luôn có thể xem các bài gửi trước đó của mình cho mọi thử thách viết mã

Thiếu tá sai

Giả sử bạn học chuyên ngành lịch sử nghệ thuật và bây giờ nhận ra rằng bạn muốn trở thành một lập trình viên. Đừng lo. Bạn có thể bắt đầu học lập trình trên trang web này và tham dự bootcamp lập trình để học thêm. Xem qua toàn bộ khóa học phát triển web của chúng tôi để bắt đầu

Làm cách nào để xóa di chuyển trong đường ray?

Chạy các lệnh bên dưới từ thư mục chính của ứng dụng. .
cào db. di chuyển. down VERSION="20140311142212" [ở đây phiên bản là dấu thời gian được thêm vào trước bởi đường ray khi quá trình di chuyển được tạo. .
Chạy "rails destroy migration_name" [tên_di chuyển là cách sử dụng được chọn khi tạo di chuyển

Rails db rollback là gì?

Di chuyển và khôi phục . lệnh di chuyển. > đường ray db. di chuyển. Nhưng đôi khi, trong khi viết di chuyển, chúng tôi có thể mắc một số lỗi. Để hoàn nguyên những lỗi như vậy, chúng tôi sử dụng db. rollback , giúp khôi phục cơ sở dữ liệu về trạng thái trước khi chạy lần di chuyển mới nhất .

Chủ Đề