sql >> Database >  >> RDS >> Mysql

De backend van de Django-database wijzigen van MySql naar PostgreSQL

Ik werd het beu om deze fout te zien bij het gebruik van South en ja, het overschakelen naar PostgreSQL heeft het verbannen!

De mysql2postgres-app, geschreven in Ruby, gesuggereerd in bovenstaande opmerkingen, werkte niet voor mij (hij zou werken, enkele details op het scherm weergeven maar geen rijen met gegevens kopiëren, voor mij). Niet zeker waarom. Maar gelukkig is er een herschrijving van Python die perfect werkte (voor mij, uiteindelijk):
http://pypi.python.org/pypi/py-mysql2pgsql

Het enige probleem dat ik vond was:

Aanvankelijk dacht ik dat het het veiligst zou zijn om de tabellen in de PostgreSQL-database in te stellen via een syncdb en vervolgens alleen de gegevens te migreren. Ik heb dit geprobeerd, maar de tabellen worden in alfabetische volgorde gemigreerd en dit schendt de beperkingen voor externe sleutels voor sommige tabellen (rijen hebben betrekking op rijen in tabellen die nog niet zijn geïmporteerd).

Ik probeerde vervolgens een structuur + gegevensmigratie. Dit migreerde prima, maar ik ondervond daarna wat problemen in Django, vooral de beheerderssite. Het leek alsof het migratiescript een aantal andere tabelbeperkingen had gecreëerd dan wat Django zou hebben.

Ik heb dit opgelost door het mysql2pgsql-script te hacken om de volgorde van de tabellen in de yaml-configuratie te respecteren only_tables eigendom... en vervolgens een syncdb + data-only migratie uit te voeren. Met vallen en opstaan ​​schudde ik de volgorde van de tabellen voor mijn migratie totdat ze allemaal met succes werden geïmporteerd.

UPDATE:
Mijn pull-verzoek voor de hierboven beschreven hack is geaccepteerd, dus je kunt dit nu doen vanuit de hoofdversie:
https://github.com/philipsoutham/py-mysql2pgsql




  1. Hoe krijg ik RANDOM-records van elke categorie in MySQL?

  2. optimaliseer mysql count-query

  3. Cast/converteer BigInt naar Varchar in MySQL

  4. INSERT INTO .. ​​ON DUPLICATE KEY UPDATE voor meerdere items