2012-03-09 7 views
4

私はこの問題を解決できないようです。DjangoでSouthをインストールする際の問題点(south_migrationhistoryテーブルが作成されない)

私は多くのアプリのためにマイグレーションを行うために南が必要です。南0.7.3

  • 解凍後のダウンロード

    1. 、ダブルは、それが通訳をPythonのために行くことによって、あるべき場所、それが南にあるかどうかを確認するためにチェックする(それはturorialに言うように)setup.py開発
    2. を走りました南

    3. (エラーなし)

      インポート私はやって

    C:\Users\j\iMiCode\imi_admin>python ./manage.py syncdb 
    

    同期しています...何備品が見つかりませんでした。この時点-At

    Synced: 
    > django.contrib.auth 
    > django.contrib.contenttypes 
    > django.contrib.sessions 
    > django.contrib.sites 
    > django.contrib.messages 
    > django.contrib.admin 
    
    Not synced (use migrations): 
    - south (use ./manage.py migrate to migrate these) 
    

    私は南理解して何から正しい同期されている必要がありますか? これ以外の場合は、データベースにsouth_migrationhistoryテーブルがないことを訴えます。

    PS。私はDjango 1.2.7、Python 2.6、Windows7で作業中です

  • +0

    私はあなたが./manage.py migrateを実行しようとしましたが、そのようなテーブルエラーはありませんでしたか? –

    答えて

    17

    私は南のバグのようです。 schemamigration --auto southを実行し、など私の提案は、南のドキュメントは言う

    easy_installをまたはピップを通じてpython setup.py installかを実行してインストールし、次のようになります:「南はいったん

    はまた、これはのような間違ったthigsを行うことで原因であってもよいです追加された場合、サウスマイグレーショントラッキングテーブルを作成するには./manage.py syncdbを実行する必要があります(サウスはさまざまな理由で独自のモデルでマイグレーションを使用しません)。

    しかし、あなたの出力は、それはあなたがする移行に関係なく、すべてのテーブルを引き起こす

    python manage.py syncdb --all 
    

    を使用することができます回避策として南アプリ使用移行

    を考えたので、南には独自のモデルのためのテーブルを作るスキップすることを言います同期して

    python manage.py migrate --fake 
    

    を偽装することができます。新しいアプリを

    +1

    - それを解決しました、ありがとうございました!私はpython setup.pyを使って南をインストールしました。それはそれをインストールするようだが、何とかそれは必要なテーブルを作成していないだけだった。 – StanM

    +0

    そのために4時間狩りをしていました。感謝万円。 django.contrib.adminは "python manage.py syncdb"によってピックアップされていませんでした。それは私に "マイグレーション"を実行するように伝え続けました。移行を実行すると「新しい変更はありません」と表示されます。だから私は管理テーブルなしで残されました。 " - オール"は私のために先に進み、作成されました。すべてがうまく終わる! – harisibrahimkv

    0

    、既存のテーブルと南を追加する手順は、これは、次のとおりです。

    1. はINSTALLED_APPSのリストに、「南」を追加します。

    2. 移行する必要があるアプリがINSTALLED_APPSにあることを確認してください。

    3. run ./manage.py syncdb(またはプロジェクトディレクトリ内のpython manage.py syncdb)。これにより、移行テーブルがデータベースに追加されます。コマンドラインから

    4. 、./manage.py schemamigration yourappname --initial

    5. 実行は、あなたが与えているエラーに基づいてyourappnameに

    を移行./manage.py行いますステップ1の後に聞こえます& 2 syncdbを実行して移行テーブルを作成することを忘れてしまったため、Southアプリがスキーマ移行を保存する場所を見つけられません。

    +0

    既存のアプリケーションにSouthを追加する場合は、./manage.py convert_to_south yourappnameを実行する必要があります。これにより、最初の移行が「偽造」されます。 convert_to_southコマンドのSouthの文書にあるこの引用符に注意してください。 – patrickn

    +0

    convert_to_southコマンドは、それを実行する最初のマシンでのみ動作します。あなたがVCSに行った最初の移行をコミットしたら、コードベースのコピーを持つすべてのマシンで./manage.py migrate myapp 0001 --fakeを実行する必要があります(それらが最新の状態になっていることを確認してください)最初にモデルとスキーマの日付)。 – patrickn

    +0

    詳細なフィードバックありがとうございます。私はsyncdbをステップ4で実行しました(ステップ3は純粋にオプションのダブルチェックで、私のコンピュータに2つのpythonインストールがあるので、正しいフォルダに南があることを確認していました。 – StanM

    0

    私はこの同じ問題に遭遇しました。私はいくつかの魔法によって、南のアプリの中にマイグレーションを作成したことが分かります。発見さ

    ~ $ # cd to python library 
    ~ $ cd `python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"` 
    python2.7/site-packages $ cd south 
    python2.7/site-packages/south $ ls migrations 
        0001_initial.py 0002_initial.py 0003_initial.py __init__.py 
    

    これらは悪いですが、そこにあること、そして自分自身をスキップする南トリガーものですべきではありません。 すべてのものを削除し、再インストールしてから、もう一度syncdbを実行してください。

    python2.7/site-packages $ rm -rf south* South* 
    ~ $ pip install south 
    
    関連する問題