Tôi cảm thấy mệt mỏi khi gặp lỗi này khi sử dụng South và vâng, việc chuyển sang PostgreSQL đã loại bỏ lỗi này!
Ứng dụng mysql2postgres, được viết bằng Ruby, được đề xuất trong các nhận xét ở trên không hoạt động với tôi (nó sẽ chạy, xuất một số chi tiết ra màn hình nhưng không sao chép bất kỳ hàng dữ liệu nào đối với tôi). Không chắc chắn lý do tại sao. Nhưng rất vui vì có một bản viết lại bằng Python về nó hoạt động hoàn hảo (đối với tôi, cuối cùng):
http://pypi.python.org/pypi/py-mysql2pgsql
Món đồ duy nhất tôi tìm thấy là:
Ban đầu, tôi nghĩ rằng sẽ an toàn nhất nếu thiết lập các bảng trong db PostgreSQL thông qua một syncdb và sau đó chỉ di chuyển dữ liệu. Tôi đã thử điều này, nhưng các bảng được di chuyển theo thứ tự bảng chữ cái và điều này vi phạm các ràng buộc khóa ngoại đối với một số bảng (các hàng liên quan đến các hàng trong bảng chưa được nhập).
Tiếp theo, tôi đã thử di chuyển cấu trúc + dữ liệu. Điều này đã được di chuyển tốt, nhưng tôi gặp phải một số vấn đề trong Django sau đó, đặc biệt là trang web quản trị. Có vẻ như tập lệnh di chuyển đã tạo ra một số ràng buộc bảng khác với những gì Django sẽ có.
Tôi đã giải quyết vấn đề này bằng cách hack tập lệnh mysql2pgsql để tôn trọng thứ tự các bảng được cung cấp trong cấu hình yaml only_tables
thuộc tính ... và sau đó thực hiện quá trình di chuyển syncdb + chỉ dữ liệu. Bằng cách thử và sai, tôi đã xáo trộn thứ tự của các bảng để di chuyển cho đến khi tất cả chúng được nhập thành công.
CẬP NHẬT:
Yêu cầu kéo của tôi đối với bản hack mô tả ở trên đã được chấp nhận nên bạn có thể thực hiện việc này ngay bây giờ từ phiên bản chính:
https://github.com/philipsoutham/py-mysql2pgsql