Привет уважаемому сообществу!
В какой-то момент времени встала потребность перенести базу приложения на django с mysql на postgresql. Первые два захода на эту проблему были неудачными, но позволили разобраться с целостностью данных, искоренить проблемы для
На первом заходе мы попытались перенести базу через конвертацию sql-простыни в диалект postgresql.
На втором заходе мы попытались перенести через
Между вторым и третьим заходом прошло много времени, и последние гугление по проблеме навело меня на эту статью. Морально я был уже готов анализировать и разбирать построчно портянки sql/yml весом под гигабайт, были заготовки для этого процесса… и все же я решил попробовать и повестись на простоту процесса.
Ну и пошло-поехло (все выполнялось в virtualenv, в postgresql была создана пустая база):
Дальше минут 5 ожидания (все делалось в виртуалке, с не очень продвинутой конфигурацией). Пару раз вылетали, с ошибкой
После проверяем с новой конфигурацией БД:
Надеюсь это описание поможет столкнувшимся с похожей проблемой.
В какой-то момент времени встала потребность перенести базу приложения на 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
— все запускается без ошибок. Теперь настала пора оптимизации. Надеюсь это описание поможет столкнувшимся с похожей проблемой.