Pull to refresh

Миграция с mysql на postgresql

PythonPostgreSQLDjango
Tutorial
Привет уважаемому сообществу!

В какой-то момент времени встала потребность перенести базу приложения на django с mysql на postgresql. Первые два захода на эту проблему были неудачными, но позволили разобраться с целостностью данных, искоренить проблемы для manage.py syncdb и manage.py migrate.

На первом заходе мы попытались перенести базу через конвертацию sql-простыни в диалект postgresql.
На втором заходе мы попытались перенести через ./manage.py dumpdata, но постоянно вылезали ошибки с ключами, невалидными данными (в базе было много ручных правок).

Между вторым и третьим заходом прошло много времени, и последние гугление по проблеме навело меня на эту статью. Морально я был уже готов анализировать и разбирать построчно портянки sql/yml весом под гигабайт, были заготовки для этого процесса… и все же я решил попробовать и повестись на простоту процесса.

Ну и пошло-поехло (все выполнялось в virtualenv, в postgresql была создана пустая база):
$ pip install py-mysql2pgsql
$ py-mysql2pgsql
No configuration file found.
A new file has been initialized at: mysql2pgsql.yml
Please review the configuration and retry...

$ vim mysql2pgsql.yml

$ py-mysql2pgsql -v -f mysql2pgsql.yml



Дальше минут 5 ожидания (все делалось в виртуалке, с не очень продвинутой конфигурацией). Пару раз вылетали, с ошибкой ОШИБКА: нулевое значение в колонке "created" нарушает ограничение NOT NULL, в моем случае это можно было решить удалением записи в мускульной таблице.

После проверяем с новой конфигурацией БД: manage.py run_gunicorn — все запускается без ошибок. Теперь настала пора оптимизации.

Надеюсь это описание поможет столкнувшимся с похожей проблемой.
Tags:djangoмиграцияmigratemysqlpostgresql
Hubs: Python PostgreSQL Django
Total votes 18: ↑14 and ↓4 +10
Views37.3K

Popular right now

Backend Python/Django
from 2,500 to 4,500 $Borderless360Remote job
Lead Python Developer (django)
from 170,000 ₽UpmarketRemote job
Python-разработчик (Django, DRF)
from 60,000 to 150,000 ₽fabriqueМоскваRemote job
Разработчик Python/Django
from 80,000 to 120,000 ₽PrintumRemote job
Разработчик Python (Middle, Django / FastAPI)
from 120,000 to 180,000 ₽Artel of Business AutomationRemote job