Trên Heroku, ngay sau khi bạn đẩy mã mới, các trường hợp phục vụ web khởi động lại ... ngay cả khi bổ sung/thay đổi lược đồ cơ sở dữ liệu cơ bản (qua syncdb hoặc di chuyển về phía nam) chưa được áp dụng.Trên Heroku, có nguy hiểm trong một Django syncdb/Nam di chuyển sau khi dụ đã khởi động lại với mã mô hình đã thay đổi?
Trong nhiều trường hợp, điều này có thể chỉ gây ra lỗi vô hại làm giảm tốc độ syncdb/di chuyển được chạy ngay sau đó. Nhưng tôi lo ngại rằng trong một số trường hợp, mã mới có thể làm việc một nửa làm thay đổi bất ngờ trong cơ sở dữ liệu di chuyển trước.
Cách nào phù hợp để chống lại rủi ro này?
Một kỹ thuật có thể là thêm syncdb/migrate vào Procfile để nó chạy trước khi khởi động lại web. Tuy nhiên, trong trường hợp có nhiều phiên bản, hoặc thậm chí có thể là trường hợp một cá thể mã cũ đang chạy cho đến khi một cá thể mã mới được biết, thì vẫn có một biến thể của vấn đề trong đó mã nói chuyện với một DB với một lược đồ không khớp.
Có tính năng 'giữ tất cả các trường hợp web' (hoặc thực tiễn phổ biến nhất) để cho phép di chuyển hoàn tất mà không có lưu lượng truy cập web không?
Hoặc tôi có quá lo ngại về rủi ro không đáng kể trong thực tế không?
+1 câu hỏi hay. Tôi có cùng một câu hỏi và tin rằng đây là một nguy cơ nghiêm trọng cần phải tránh. Nếu syncdb/migrate hoạt động tốt, trang web của bạn sẽ ngừng hoạt động dưới một phút. Nhưng nếu nó không thành công vì bất kỳ lý do gì, trang web của bạn sẽ ngừng hoạt động cho đến khi bạn có thể giải quyết nó ... – Spike
Tôi có cùng một vấn đề. Nó thực sự xảy ra rằng trang web của tôi khi xuống, bởi vì di cư phía nam của tôi đã không thành công. May mắn thay, tôi đã có thể khôi phục các thay đổi bằng cách sử dụng lệnh "heroku rollback". – duduklein
Tôi muốn giới thiệu một ví dụ dàn dựng để 'thực hành' di chuyển trước khi thử nó trên trang web sản xuất thực tế của bạn. http://devcenter.heroku.com/articles/multiple-environments –