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ệuBâ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
6Bâ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ốnNhư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
7Ví dụ: giả sử bạn đã chạy
> rails db:migrate
9Bạn có thể hoàn tác nó với
> rails db:rollback
0cà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
1Sau đó, 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
2Giả 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
3ngườ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