Ich habe eine Tabelle in Postgres 9.5 mit etwa 7KK Zeilen. Djangos Version ist 1.10.5. Datenbank und App sind verschiedene Server mit Ubuntu 16.04.2 in einem lokalen Netzwerk.Django hängt an der Anwendung großer Migration
Djangos Gunicorn-Server wird gestoppt, daher werden keine anderen Operationen ausgeführt. Ich werde dort ein Feld hinzuzufügen:
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),
),
Und dann bin ich Anwendung:
$ ./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...
und Überwachung Postgres mit pg_top.
Es ALTER für etwa 15 Minuten tut, dann sehe ich das:
34567 postgres 20 0 401M 39M sleep 2:17 0.10% 0.00% postgres: *** *** ip(45200) idle in transaction
Dies gilt nicht für etwa 10 Minuten ändern (nur WCPU von 0% bis etwa 0,1% zu ändern und zurück).
Dann verschwindet dieser Datensatz (ich denke, das bedeutet, Client ist getrennt), aber ./manage.py migrate ...
ändert seinen Status überhaupt nicht, es bleibt nur "läuft" ohne Änderungen (ich habe etwa 2 Stunden gewartet).
Ich habe versucht, postgres-Dienst neu zu starten, wenn ich dies tue, Rollback-Transaktion (denke ich), gibt etwas Speicherplatz frei, aber Migrations-Management-Befehl bleibt immer noch hängen. Es reagiert nicht einmal auf Ctrl-C, ich kann es nur mit -9 beenden.
Ich bemerkte auch, dass etwa 1-2 GB freier Speicherplatz nach jedem Versuch verschwindet.
Also, wie kann ich dieses Problem beheben?
Ich habe gerade über eine Lösung wie folgt nachgedacht :) Danke, ich werde es versuchen. – arts777
Ja, das hat geholfen. Vielen Dank! – arts777