2010-02-10 32 views
10

Vì vậy, đây là dự án Ruby on Rails thực sự đầu tiên của tôi. Tôi đã học được bài học của mình - Tôi đã không thực hiện tất cả thay đổi bằng cách sử dụng di chuyển để mọi thứ có chút rắc rối.Cách quay trở lại để bắt đầu và tạo lại/tái tạo các di cư mới

Cách tốt nhất để bắt đầu lại với tệp di chuyển mới và xây dựng lại giản đồ, v.v ... là gì? Dự án của tôi quá xa để xây dựng lại toàn bộ dự án, nhưng không đủ xa đến nơi tôi quan tâm đến việc mất đi những di cư mà tôi đã có. Tôi cũng không nhớ mất dữ liệu trong cơ sở dữ liệu. Tôi đã cố gắng để quay trở lại đầu nhưng một số của nó là không.

Tôi biết đây là trạng thái xấu, nhưng bài học đã học.

EDIT: Tôi vừa xóa tất cả tệp di chuyển và xây dựng lại tệp lược đồ bằng db: schema: dump. Tôi cho rằng điều này đặt tôi ở trạng thái sạch với cơ sở dữ liệu hiện có của tôi, chỉ mất di chuyển.

Trả lời

5

tập tin schema.rb của bạn nên chứa các lược đồ thực tế từ cơ sở dữ liệu của bạn. Bạn có thể sử dụng nó như là một điểm khởi đầu để tạo ra bạn di chuyển. Bạn có thể tạo một di chuyển mới cho mỗi bảng với tham số :force => true để ghi đè lên bảng cũ. Sau đó bạn chỉ có thể xóa các di chuyển cũ (có thể bạn cũng cần xóa các mục nhập của chúng khỏi bảng schema_migrations).

Một tùy chọn khác sẽ chỉ cập nhật các lần di chuyển cũ để khớp với giản đồ hiện tại của bạn.

+0

Cảm ơn - Tôi vừa xóa di chuyển, làm rỗng schema_migrations bảng, sau đó chạy 'rake db: reset'. Lược đồ của tôi không được cập nhật đầy đủ nên tôi phải thực hiện một số chỉnh sửa cho db sau đó. Nếu tôi phải làm điều này một lần nữa tôi sẽ làm điều tương tự nhưng cố gắng tìm ra nếu có một cách để tạo lại tệp lược đồ từ trạng thái hiện tại của db. – 99miles

7

Nếu bạn không quan tâm về việc mất dữ liệu sau đó làm

rake db:purge 

Nó chỉ nên thả cơ sở dữ liệu của bạn

+9

điều này đã thay đổi đối với rake db: thả trong Rails 3 (rake db: drop: tất cả để thả cho tất cả các môi trường) – jvatic

+0

rake db: reset giống như nó – montrealmike

9

nếu bạn muốn di chuyển một số bước bạn có thể sao lưu

rake db:rollback STEP=2 

Đó lệnh sẽ di chuyển của bạn cơ sở dữ liệu 2 di cư trở lại. Nếu bạn cần thêm trợ giúp với các lệnh cào, jus loại

rake -T 

Đó lệnh sẽ liệt kê tất cả các nhiệm vụ mà bạn có trong bạn ứng dụng.

+0

Nó liệt kê tất cả các lệnh có mô tả. – Timo

Các vấn đề liên quan