sql >> Database teknologi >  >> RDS >> PostgreSQL

Django-armaturen mislykkes, og angiver DatabaseError:værdien er for lang til at typetegn varierer (50)

Opdatering:grænsen på 50 tegn er nu 255 i Django 1.8

--

Originalt svar:

Jeg stødte også lige på dette i eftermiddags, og jeg har en (en slags) rettelse

Dette indlæg her antydede, at det er en Django-fejl, der har at gøre med længden af ​​den tilladte værdi for auth_permission. Yderligere gravearbejde understøtter denne idé, og det samme gør denne Django-billet (selvom den oprindeligt er MySQL-relateret).

Det er dybest set, at et tilladelsesnavn oprettes baseret på verbose_name på en model plus en beskrivende tilladelsesstreng, og som kan flyde over til mere end de 50 tilladte tegn i auth.models.Permission.name.

For at citere en kommentar til Django-billetten:

De længste præfikser for strengværdien i kolonnen auth_permission.name er "Can change " og "Can delete ", begge med 11 tegn. Kolonnens maksimale længde er 50, så den maksimale længde af Meta.verbose_name er 39.

En løsning ville være at hacke den kolonne til at understøtte> 50 tegn (ideelt via en syd-migrering, siger jeg, så den let kan gentages), men den hurtigste, mest pålidelige løsning, jeg kunne komme i tanke om, var simpelthen at lave min ekstra lange verbose_name-definition meget kortere (fra 47 tegn i verbose_name til omkring 20). Alt fungerer fint nu.



  1. Eksempel på Oracle Pipelined funktion

  2. Embedded Postgres til fjederstøvletest

  3. Sammenføjning af resultater fra to separate databaser

  4. Giv tilladelser til en MySQL-bruger på Linux via kommandolinjen