sql >> Database teknologi >  >> RDS >> Mysql

Ændring af Django-databasebackend fra MySql til PostgreSQL

Jeg blev træt af at se denne fejl ved brug af South, og ja, skift til PostgreSQL har forvist det!

Mysql2postgres-appen, skrevet i Ruby, foreslået i kommentarerne ovenfor, virkede ikke for mig (den ville køre, udlæse nogle detaljer til skærmen, men ikke kopiere nogen rækker af data, for mig). Ikke sikker på hvorfor. Men der er gerne en Python-omskrivning af det, der fungerede upåklageligt (til sidst for mig):
http://pypi.python.org/pypi/py-mysql2pgsql

Den eneste gotcha jeg fandt var:

Til at begynde med troede jeg, at det ville være sikrest at opsætte tabellerne i PostgreSQL db via en syncdb og derefter kun migrere dataene. Jeg prøvede dette, men tabellerne er migreret henover i alfabetisk rækkefølge, og dette overtræder begrænsningerne for fremmednøgle for nogle tabeller (rækker vedrører rækker i tabeller, der endnu ikke er importeret).

Jeg prøvede derefter en struktur+datamigrering. Dette migrerede fint, men jeg stødte på nogle problemer i Django bagefter, især administratorsiden. Det så ud til, at migreringsscriptet havde skabt nogle forskellige tabelbegrænsninger end hvad Django ville have.

Jeg løste dette ved at hacke mysql2pgsql-scriptet for at respektere rækkefølgen af ​​tabeller givet i yaml-konfigurationen only_tables egenskab... og derefter lave en syncdb + kun data-migrering. Ved forsøg og fejl blandede jeg mig rundt i rækkefølgen af ​​tabellerne til min migrering, indtil de alle blev importeret med succes.

OPDATERING:
Min pull-anmodning til hacket beskrevet ovenfor blev accepteret, så du kan gøre dette nu fra hovedversionen:
https://github.com/philipsoutham/py-mysql2pgsql




  1. få nyt SQL record ID

  2. MySQL Group Efter brugerdefineret tidsstempel

  3. Oracle REPLACE()-funktionen håndterer ikke vognretur og linjefeeds

  4. wordpress posts_orderby filter med tilpasset tabel i plugin