Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

221
Views
Django se aferra a la aplicación de una gran migración

Tengo una tabla en Postgres 9.5 con aproximadamente 7KK filas. La versión de Django es 1.10.5. La base de datos y la aplicación son servidores diferentes con Ubuntu 16.04.2 dentro de una red local.

El servidor gunicorn de Django está detenido, por lo que no se ejecuta ninguna otra operación. Voy a agregar un campo allí:

 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), ),

Y luego lo estoy aplicando:

 $ ./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...

Y monitoreando Postgres con pg_top.

Está haciendo ALTER durante unos 15 minutos, luego veo esto:

 34567 postgres 20 0 401M 39M sleep 2:17 0.10% 0.00% postgres: *** *** ip(45200) idle in transaction

Esto no cambia durante unos 10 minutos (solo WCPU cambia de 0 % a aproximadamente 0,1 % y viceversa).

Luego, este registro desaparece (creo que esto significa que el cliente está desconectado), pero ./manage.py migrate ... no cambia su estado en absoluto, simplemente permanece "ejecutándose" sin cambios (he esperado alrededor de 2 horas).

Intenté reiniciar el servicio de postgres, si hago esto, revierte la transacción (creo), libera algo de espacio en el disco, pero el comando de administración de migración aún se bloquea. Ni siquiera reacciona con Ctrl-C, solo puedo matarlo con -9.

También noté que alrededor de 1-2 GB de espacio libre en el disco desaparecen después de cada intento.

Entonces, ¿cómo puedo solucionar este problema?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No puedo hacer comentarios debido a la poca reputación, por lo que tendrá que ser una respuesta.

No tengo una solución, pero una idea para una solución alternativa. Puede escribir python manage.py sqlmigrate que mostrará el SQL que realiza y luego ejecutarlo manualmente hacia la base de datos. Si esto puede funcionar, debe agregar una entrada en la tabla de la base de datos django_migrations con el nombre de la migración y la aplicación para la migración.

No tengo idea de si esto funcionará, pero es posible que pueda identificar el error en la declaración SQL y optimizarlo un poco.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!