私は約7KK行のPostgres 9.5にテーブルを持っています。 Djangoのバージョンは1.10.5です。データベースとアプリケーションは、1つのローカルネットワーク内にあるUbuntu 16.04.2とは異なるサーバーです。Djangoは巨大な移行を適用するとハングします
Djangoのgunicornサーバーが停止しているため、他の操作は実行されていません。私はそこに一つのフィールドを追加するつもりです:
migrations.AlterField(
model_name='balanceentry',
name='reason',
field=models.CharField(
choices=[(b'default', b'Default'), (b'referral', b'Referral'), (b'referrer', b'Referrer'),
(b'random', b'Random'), (b'android_offer', b'Android Offer'), (b'ios_offer', b'iOS Offer'),
(b'offerwall', b'Offerwall'), (b'withdrawal', b'Withdrawal')],
default=b'default', db_index=True, max_length=32),
),
をそして私は、それを適用しています:
$ ./manage.py migrate users 0026_auto_20170419_1758
Operations to perform:
Target specific migration: 0026_auto_20170419_1758, from users
Running migrations:
Applying users.0026_auto_20170419_1758...
をそしてpg_topではPostgresを監視します。それは、約15分間ALTERをやっている
は、その後、私はこれを参照してください。
34567 postgres 20 0 401M 39M sleep 2:17 0.10% 0.00% postgres: *** *** ip(45200) idle in transaction
これは(バックのみWCPUは約0.1%、0%から変化していると)約10分間は変更されません。
./manage.py migrate ...
はステータスがまったく変更されず、変更なしで「実行中」のままです(約2時間待っています)。このレコードは消えます(これはクライアントが接続されていないことを意味します)。
postgresサービスを再起動しようとしましたが、これを実行するとトランザクションがロールバックされてディスクスペースが解放されますが、移行コマンドはまだハングします。それはCtrl-Cで反応することさえない、私は-9でそれを殺すことができる。
また、試行ごとに約1〜2 GBの空きディスク容量がなくなっていることに気付きました。
この問題を解決するにはどうすればよいですか?
私はちょうどこのような解決策について考えました:)ありがとう、私は試してみます。 – arts777
うん、それは助けた。ありがとう! – arts777