- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

Между вторым и третьим заходом прошло много времени, и последние гугление по проблеме навело меня на эту статью [1]. Морально я был уже готов анализировать и разбирать построчно портянки 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 — все запускается без ошибок. Теперь настала пора оптимизации.

Надеюсь это описание поможет столкнувшимся с похожей проблемой.

Автор: rudenkovk

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/46175

Ссылки в тексте:

[1] эту статью: http://www.tryolabs.com/Blog/2012/02/10/django-migrating-mysql-postgresql/

[2] Источник: http://habrahabr.ru/post/198366/