sql >> Database >  >> RDS >> PostgreSQL

Django-fixture mislukt, met vermelding van DatabaseError:waarde te lang voor type karakter variërend (50)

Update:de limiet van 50 tekens is nu 255 in Django 1.8

--

Oorspronkelijk antwoord:

Ik kwam dit vanmiddag ook tegen en ik heb een (soort van) oplossing

Dit bericht hier impliceerde dat het een Django-bug is die te maken heeft met de lengte van de waarde die is toegestaan ​​voor auth_permission. Verder graven ondersteunt dat idee, net als dit Django-ticket (ook al is het in eerste instantie MySQL-gerelateerd).

Het komt erop neer dat een machtigingsnaam wordt gemaakt op basis van de uitgebreide_naam van een model plus een beschrijvende machtigingsreeks, en die kan overlopen naar meer dan de 50 tekens die zijn toegestaan ​​in auth.models.Permission.name.

Om een ​​opmerking over het Django-ticket te citeren:

De langste prefixen voor de stringwaarde in de kolom auth_permission.name zijn "Can change" en "Can delete", beide met 11 tekens. De maximale lengte van de kolom is 50, dus de maximale lengte van Meta.verbose_name is 39.

Een oplossing zou zijn om die kolom te hacken om> 50 tekens te ondersteunen (idealiter via een Zuid-migratie, zeg ik, zodat het gemakkelijk herhaalbaar is), maar de snelste, meest betrouwbare oplossing die ik kon bedenken was gewoon om mijn extra lange uitgebreide naamnaamdefinitie te maken een stuk korter (van 47 tekens in de uitgebreide_naam tot ongeveer 20). Alles werkt nu goed.



  1. Databasemodellen voor e-commerce Deel 1:De nieuwsbrief

  2. Kolom berekend uit een andere kolom?

  3. MySQL Kolom hernoemen

  4. Hoe meerdere records in te voegen en de identiteitswaarde te krijgen?