sql >> データベース >  >> RDS >> Mysql

DjangoデータベースのバックエンドをMySqlからPostgreSQLに変更する

    Southを使用してこのエラーを確認するのにうんざりしました。はい、PostgreSQLに切り替えるとエラーがなくなりました!

    上記のコメントで提案されたRubyで書かれたmysql2postgresアプリは、私には機能しませんでした(実行され、画面に詳細が出力されますが、データの行はコピーされません)。理由はわかりません。しかし、喜んでそれのPythonの書き直しが完璧に機能しました(私にとっては、最終的に):
    http://pypi.python.org/pypi/py-mysql2pgsql

    私が見つけた唯一の落とし穴は:

    最初は、syncdbを介してPostgreSQLデータベースにテーブルを設定し、データのみを移行するのが最も安全だと思いました。これを試しましたが、テーブルはアルファベット順に移行され、一部のテーブルの外部キー制約に違反しています(行はまだインポートされていないテーブルの行に関連しています)。

    次に、構造とデータの移行を試しました。これは正常に移行されましたが、その後、Django、特に管理サイトでいくつかの問題が発生しました。移行スクリプトによって、Djangoとは異なるテーブル制約が作成されたようです。

    mysql2pgsqlスクリプトをハッキングして、yaml config only_tablesで指定されたテーブルの順序を尊重することでこれを解決しました。 プロパティ...そしてsyncdb+データのみの移行を行います。試行錯誤の末、すべてが正常にインポートされるまで、移行のためにテーブルの順序を入れ替えました。

    更新:
    上記のハックのプルリクエストが受け入れられたので、メインバージョンから今すぐこれを行うことができます:
    https://github.com/philipsoutham/py-mysql2pgsql




    1. OracleのLOWER()関数

    2. Laravelグローバル設定モデル

    3. mysql:フィールドの長さを切り捨てる方法

    4. ORA-00257:アーカイバエラー。解放されるまで、内部のみを接続します。