Có ai đã làm điều này không? Nó là một quá trình dễ dàng? Chúng tôi đang nghĩ đến việc chuyển đổi cho các giao dịch và vì mysql có vẻ là "thèm ra" gần đây.Làm thế nào tôi có thể dễ dàng chuyển đổi một ứng dụng Django từ mySQL sang PostgreSQL?
Trả lời
Tôi vừa sử dụng công cụ này để di chuyển ứng dụng nội bộ và nó hoạt động tuyệt vời. https://github.com/maxlapshin/mysql2postgres
Tôi chưa bao giờ làm điều đó một cách cá nhân, nhưng có vẻ như kết hợp các tùy chọn dumpdata và loaddata của manage.py sẽ có thể giải quyết vấn đề của bạn khá dễ dàng. Tức là, trừ khi bạn có rất nhiều thứ cụ thể về cơ sở dữ liệu sống bên ngoài ORM, chẳng hạn như các thủ tục được lưu trữ.
hoạt động, nhưng đôi khi cần cắt bớt tất cả các bảng được tạo bởi syncdb – Alexey
dữ liệu đổ tải toàn bộ tập dữ liệu vào ghi nhớ trước khi tuần tự hóa - đây là một vấn đề cho một tập dữ liệu lớn. http://www.ofbrooklyn.com/2010/07/18/migrating-django-mysql-postgresql-easy-way/ cho biết cách chunk quá trình này để tránh làm rơi máy chủ của bạn. – yarbelk
Tôi cũng chưa làm điều đó. Lần đầu tiên tôi thực hiện theo số migration guide, there is a MySql section này sẽ xử lý tất cả dữ liệu của bạn. Sau đó, django chỉ cần chuyển mysql thành postgre trong cài đặt. Tôi nghĩ điều đó sẽ ổn thôi.
Tôi tìm thấy một câu hỏi khác trên stackoverflow sẽ giúp chuyển đổi mysql thành postgre here.
Bạn có thể làm điều đó bằng cách sử dụng trình nối tiếp Django để xuất dữ liệu từ định dạng của MySQL sang JSON và sau đó quay lại Postgres. Có một số artices tốt trên internet về điều đó:
python manage.py dump.data >> data.json
Tạo cơ sở dữ liệu và người dùng trong postrgesql
- Đặt cơ sở dữ liệu vừa tạo của bạn trong postrgesql làm cơ sở dữ liệu mặc định trong cài đặt django hoặc sử dụng thông số --datab ase = your_postrgesql_database các bước tiếp theo
Chạy syncdb để tạo bảng.
python syncdb [--database = your_postrgesql_database] --noinput
Tạo bãi không có dữ liệu, thả tất cả các bảng và bãi tải. Hoặc cắt bớt tất cả các bảng (bảng django_content_type whith dữ liệu mà có thể không bằng với dữ liệu cũ của bạn - đó là cách để nhiều lỗi). Ở bước này, chúng ta cần các bảng trống trong postgresql-db.
Khi bạn có bảng trống trong postgresql-DB chỉ tải dữ liệu của bạn:
python manage.py LoadData data.json
Và được vui vẻ!
Tôi đã viết một lệnh quản lý Django rằng bản một cơ sở dữ liệu khác: https://gist.github.com/mturilin/1ed9763ab4aa98516a7d
Bạn cần phải thêm cả cơ sở dữ liệu trong các thiết lập và sử dụng lệnh này:
./manage.py copy_db from_database to_database app1 app2 app3 --delete --ignore-errors
gì thú vị về lệnh này là rằng nó đệ quy sao chép các đối tượng phụ thuộc.Ví dụ: nếu mô hình có 2 khóa ngoại và hai mối quan hệ Nhiều-nhiều, trước tiên nó sẽ sao chép các đối tượng khác để đảm bảo bạn sẽ không nhận được lỗi vi phạm khóa ngoại.
Chuyển đổi cơ sở dữ liệu MySQL cơ sở dữ liệu Postgres với Django
Đầu tiên sao lưu dữ liệu của bạn trong cơ sở dữ liệu Mysql cũ trong đồ đạc json:
$ python manage.py dumpdata contenttypes --indent=4 --natural-foreign > contenttype.json
$ python manage.py dumpdata --exclude contenttypes --indent=4 --natural-foreign > everything_else.json
Sau đó chuyển settings.DATABASES của bạn để thiết lập postgres.
Tạo các bảng trong PostgreSQL:
$ python manage.py migrate
Bây giờ xóa tất cả các nội dung được tự động thực hiện trong các di cư (django contenttypes, nhóm nằm vv):
$ python manage.py sqlflush | ./manage.py dbshell
Và bây giờ bạn có thể an toàn nhập khẩu tất cả mọi thứ, và giữ cho pk của bạn giống nhau!
$ python manage.py loaddata contenttype.json
$ python manage.py loaddata everything_else.json
Thử nghiệm với Django == 1,8
Làm việc hoàn hảo cho tôi với Django == 1.11.4 – endur
- 1. Cách dễ dàng chuyển đổi từ WinForms sang WPF
- 2. Có cách nào dễ dàng để chuyển đổi Ứng dụng Android sang IPad, IPhone
- 3. Làm thế nào tôi có thể dễ dàng có được một TextReader từ một XDocument?
- 4. Làm thế nào tôi có thể dễ dàng chuyển đổi mã FORTRAN sang mã Python (mã thực, không bao bọc)
- 5. Di chuyển từ MySQL sang PostgreSQL
- 6. Chúng ta có nên chuyển đổi sang PostgreSQL từ MySQL không?
- 7. Làm thế nào tôi có thể chuyển đổi một chuỗi thành một float trong mysql?
- 8. Làm thế nào tôi có thể dễ dàng có được tên của một trường hợp Scala?
- 9. Có cách nào dễ dàng để chuyển đổi các lớp C# sang PHP?
- 10. Có hướng dẫn dễ dàng nào để di chuyển từ Phusion Passenger sang Unicorn?
- 11. Làm thế nào để chuyển đổi một số nguyên thành một chuỗi một cách dễ dàng?
- 12. Làm thế nào tôi có thể chuyển đổi từ chung sang biến thể trong Delphi
- 13. Làm thế nào để một LAMP Guy có thể dễ dàng triển khai WebSockets?
- 14. Làm thế nào tôi có thể dễ dàng thay thế lắp ráp Microsoft Fakes?
- 15. Tôi có thể dễ dàng đổi tên hàng loạt tệp bằng Perl như thế nào?
- 16. Cách dễ dàng cho Báo cáo tinh thể sang MS SQL Server Reporting Services chuyển đổi
- 17. Người dùng Django nên biết gì khi di chuyển từ MySQL sang PostgreSQL?
- 18. OpenGL vs OpenGL ES 2.0 - Ứng dụng OpenGL có thể được chuyển dễ dàng không?
- 19. Làm thế nào để chuyển từ Drupal sang Django?
- 20. Làm thế nào tôi có thể dễ dàng làm phẳng mảng ba chiều trong Cocoa?
- 21. Làm thế nào tôi có thể dễ dàng sử dụng một thành phần COM trong Native Visual C++
- 22. Có cách nào dễ dàng để biến một bảng MySQL thành một Redis tương đương?
- 23. Chuyển đổi tệp kết xuất PostgreSQL sang MySQL?
- 24. Làm cách nào để ứng dụng C# có thể dễ dàng giao tiếp và chuyển các tệp trên mạng?
- 25. Có cách nào dễ dàng để chuyển đổi một Boolean thành một số nguyên không?
- 26. Dễ dàng chuyển đổi "Xem bộ điều khiển" trong ứng dụng Mac (tương tự như iOS)
- 27. Làm thế nào tôi có thể tự động chuyển đổi MySQL DDL thành Oracle DDL?
- 28. Chuyển đổi một ứng dụng Winform sang ứng dụng WPF
- 29. Làm thế nào tôi có thể sử dụng ORM Django trong ứng dụng Tornado của tôi?
- 30. Làm thế nào tôi có thể chuyển đổi hình chữ nhật sang RectangleF?
1) MySql không giao dịch hỗ trợ (InnoDB) 2) Điều gì làm cho bạn nghĩ rằng MySql là "crapping ra" thời gian gần đây? –
Vì lý do tại sao chúng ta sẽ bắt đầu nhận các lỗi này: OperationalError: (1205, 'Waitout timeout outout; try restarting transaction') Ngoài ra, sử dụng South với Django đôi khi làm tổn thương mà không có giao dịch thực. –
MySQL không hỗ trợ các giao dịch lược đồ - có thể gây ra một cơn đau đầu lớn khi di chuyển – yarbelk