Mysql
 sql >> база данни >  >> RDS >> Mysql

Промяна на бекенда на базата данни на Django от MySql на PostgreSQL

Омръзна ми да виждам тази грешка при използване на South и да, превключването към PostgreSQL я прогони!

Приложението mysql2postgres, написано на Ruby, предложено в коментарите по-горе, не работи за мен (ще работи, извежда някои подробности на екрана, но не копира никакви редове с данни за мен). Не знам защо. Но с удоволствие има пренаписване на Python за него, което работи безупречно (в крайна сметка за мен):
http://pypi.python.org/pypi/py-mysql2pgsql

Единственият проблем, който открих, беше:

Първоначално мислех, че би било най-безопасно да настроя таблиците в PostgreSQL db чрез syncdb и след това да мигрирам само данните. Опитах това, но таблиците се мигрират по азбучен ред и това нарушава ограниченията на външния ключ за някои таблици (редовете се отнасят до редове в таблици, които все още не са импортирани).

След това опитах миграция на структура + данни. Това мигрира добре, но след това срещнах някои проблеми в Django, особено в администраторския сайт. Изглежда, че скриптът за миграция е създал някои различни ограничения на таблицата от това, което Django би имал.

Реших това, като хакнах скрипта mysql2pgsql, за да спазвам реда на таблиците, даден в конфигурацията на yaml only_tables свойство... и след това извършване на syncdb + миграция само на данни. Чрез опит и грешка разбърках подредбата на таблиците за моята миграция, докато всички те се импортират успешно.

АКТУАЛИЗАЦИЯ:
Моята заявка за изтегляне за описания по-горе хак беше приета, така че можете да направите това сега от основната версия:
https://github.com/philipsoutham/py-mysql2pgsql




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА В MySQL 502:SELECT * FROM table WHERE uid=1 ORDER BY id DESC LIMIT 0, 100; Пагинацията не работи

  2. Как да поставя текст пред полето за автоматично увеличение в mysql (като:TTT00001)?

  3. mysql GRANT + КЪДЕ

  4. SET потребителски дефинирана променлива в mysql да върне null?

  5. Дублирайте запис в MySQL