Migration squashing was always meant to be something that was useful in a rapid 
development environment where you can't control all the installs (since it was 
a feature developed alongside a CMS run by many clients at the time).

If you have control of all the places your project is installed and can have 
everyone developing on it do something at once, you can just do it via a 
complete migration reset and be happy. Squashing is for a very specific 
backwards-compatibility scenario that, I suspect, many Django projects 
developed internally are not in.

Andrew

On Tue, May 11, 2021, at 7:58 PM, Kye Russell wrote:
> I’ve never successfully squashed my migrations to any material degree, but 
> I’ve chalked that up to lack of doing it with any regularity. I suspect that 
> squashing works a lot better if you aren’t trying to clean up a mess of 
> hundreds of migrations files over 5 years, which is where I find myself! 
> 
> Kye
> On 12 May 2021, 9:31 AM +0800, Matthew Pava <matthew.p...@iss.com>, wrote:
> 
>> I've had similar issues. I just avoid squashing anymore. It's just not with 
>> the pain, and having so many little files that get looked at a minimal 
>> amount of time isn't worth fretting over. Saying that, I'd love to get it 
>> fixed...
>> 
>> 
>> Sent from my Verizon, Samsung Galaxy smartphone
>> 
>> Get Outlook for Android <https://aka.ms/ghei36>
>> 
>> 
>> *From:* 'Mike Lissner' via Django developers (Contributions to Django 
>> itself) <django-developers@googlegroups.com>
>> *Sent:* Tuesday, May 11, 2021 7:50:31 PM
>> *To:* Django developers (Contributions to Django itself) 
>> <django-developers@googlegroups.com>
>> *Subject:* Do people actually squash migrations? 
>>  
>> I have a pretty big django project, and since I created the 100th migration 
>> within one of its apps today, I thought I'd finally do some squashing. It 
>> hasn't gone well, but I eventually got the data migrations cleaned up.
>> 
>> Finally, I run it, and it runs smack into a CircularDependencyError, as 
>> described here:
>> 
>> https://code.djangoproject.com/ticket/23337
>> 
>> Basically, from what I understand, after the squash you have one migration 
>> that depends on various others from your other apps. Naturally, that totally 
>> falls over, because can't go from this series of migrations:
>> 
>> app1: migration 1
>> app2: migration 1
>> app2: migration 2
>> app1: migration 2
>> 
>> To, well...any series of migrations in which migration 1&2 from app1 or app2 
>> have been squashed. The docs have something to say about this*, but it feels 
>> like this must affect practically any biggish project.
>> 
>> Stackoverflow also has a variety of dubious (and very complex) advice (read 
>> it and weep):
>> 
>> https://stackoverflow.com/questions/37711402/circular-dependency-when-squashing-django-migrations
>> 
>> So, my question is: Do people actually use squashmigrations with success? 
>> And if not, is it reasonable to consider deprecating it or fixing the bug, 
>> or updating the docs to loudly say it largely doesn't work? I'm surprised 
>> the issue above has so little movement since it was created seven years ago.
>> 
>> Maybe it's just me? If not, it'd be nice to do something to help future 
>> people with ambitions of a simple squash.
>> 
>> Thanks,
>> 
>> 
>> Mike
>>  
>> * Note that model interdependencies in Django can get very complex, and 
>> squashing may result in migrations that do not run; either mis-optimized (in 
>> which case you can try again with --no-optimize, though you should also 
>> report an issue), or with a CircularDependencyError, in which case you can 
>> manually resolve it.
>> To manually resolve a CircularDependencyError, break out one of the 
>> ForeignKeys in the circular dependency loop into a separate migration, and 
>> move the dependency on the other app with it. If you’re unsure, see how 
>> makemigrations 
>> <https://us-east-2.protection.sophos.com/?d=djangoproject.com&u=aHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzMuMS9yZWYvZGphbmdvLWFkbWluLyNkamFuZ28tYWRtaW4tbWFrZW1pZ3JhdGlvbnM=&i=NWVjN2YxNzUxNGEyNzMxNmMyMGRkZGU1&t=OVFwYmVaMGVKZ2phcWpWUmRBZmZFK09TQjh6bGtHaGpCVXdGSklWVWZ0ND0=&h=b5f442795e5e456485245d491bee80a4>
>>  deals with the problem when asked to create brand new migrations from your 
>> models. In a future release of Django, squashmigrations 
>> <https://us-east-2.protection.sophos.com/?d=djangoproject.com&u=aHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzMuMS9yZWYvZGphbmdvLWFkbWluLyNkamFuZ28tYWRtaW4tc3F1YXNobWlncmF0aW9ucw==&i=NWVjN2YxNzUxNGEyNzMxNmMyMGRkZGU1&t=SWNaWFlpZWFoSWZNNXQ0c240V2ovN0JOKysvNDJlWHM5cnRVQ3BHNmlJUT0=&h=b5f442795e5e456485245d491bee80a4>
>>  will be updated to attempt to resolve these errors itself. [Author's note: 
>> These sentences really leave me blowing in the wind...maybe I can figure out 
>> what they mean, I guess? I thought squashing was supposed to be easy.]

>> 
>> 
>> 

>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Django developers (Contributions to Django itself)" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to django-developers+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-developers/87f449bc-d653-427a-ac28-879ee0701c8bn%40googlegroups.com
>>  
>> <https://us-east-2.protection.sophos.com/?d=google.com&u=aHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL21zZ2lkL2RqYW5nby1kZXZlbG9wZXJzLzg3ZjQ0OWJjLWQ2NTMtNDI3YS1hYzI4LTg3OWVlMDcwMWM4Ym4lNDBnb29nbGVncm91cHMuY29tP3V0bV9tZWRpdW09ZW1haWwmdXRtX3NvdXJjZT1mb290ZXI=&i=NWVjN2YxNzUxNGEyNzMxNmMyMGRkZGU1&t=cWhoRWVVNlpibE1SK2dtTHNQVm5XYzFBSS9TeDRpMWtETDI4WVY2MG9BND0=&h=b5f442795e5e456485245d491bee80a4>.
>> 

>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Django developers (Contributions to Django itself)" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to django-developers+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-developers/SN6PR05MB3951135EF4ECFE249F51ED4BF1529%40SN6PR05MB3951.namprd05.prod.outlook.com
>>  
>> <https://groups.google.com/d/msgid/django-developers/SN6PR05MB3951135EF4ECFE249F51ED4BF1529%40SN6PR05MB3951.namprd05.prod.outlook.com?utm_medium=email&utm_source=footer>.
> 

> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-developers+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-developers/76351f53-d185-4dd1-9979-6a7c73015ef5%40Spark
>  
> <https://groups.google.com/d/msgid/django-developers/76351f53-d185-4dd1-9979-6a7c73015ef5%40Spark?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/b8398df6-8b2d-4d76-b60d-e227e449f84e%40www.fastmail.com.
  • Do ... 'Mike Lissner' via Django developers (Contributions to Django itself)
    • ... Matthew Pava
      • ... Kye Russell
        • ... Andrew Godwin
          • ... 'Mike Lissner' via Django developers (Contributions to Django itself)
            • ... 'Mike Lissner' via Django developers (Contributions to Django itself)
              • ... Ryan Hiebert
              • ... Hanne Moa
            • ... René Fleschenberg
              • ... 'Mike Lissner' via Django developers (Contributions to Django itself)
            • ... Shai Berger
    • ... Raffaele Salmaso
    • ... Benny

Reply via email to