sql >> Databáze >  >> RDS >> PostgreSQL

Zařízení Django selhalo a uvádí DatabaseError:hodnota je příliš dlouhá pro typový znak se liší (50)

Aktualizace:limit 50 znaků je nyní 255 v Django 1.8

--

Původní odpověď:

Zrovna jsem se s tím dnes odpoledne setkal a mám opravu (jakéhosi)

Tento příspěvek naznačoval, že jde o chybu Django, která souvisí s délkou hodnoty povolené pro auth_permission. Další kopání tuto myšlenku podpoří, stejně jako tento lístek Django (i když zpočátku souvisí s MySQL).

V zásadě jde o to, že název oprávnění je vytvořen na základě verbose_name modelu plus popisného řetězce oprávnění, a to může překročit více než 50 znaků povolených v auth.models.Permission.name.

Chcete-li citovat komentář k lístku Django:

Nejdelší předpony pro hodnotu řetězce ve sloupci auth_permission.name jsou "Can change" a "Can delete", obě mají 11 znaků. Maximální délka sloupce je 50, takže maximální délka Meta.verbose_name je 39.

Jedním z řešení by bylo hacknout tento sloupec, aby podporoval> 50 znaků (v ideálním případě prostřednictvím migrace na jih, říkám, aby to bylo snadno opakovatelné), ale nejrychlejší a nejspolehlivější oprava, kterou jsem mohl myslet, bylo jednoduše vytvořit svou extra dlouhou definici verbose_name mnohem kratší (od 47 znaků ve verbose_name na přibližně 20). Vše nyní funguje dobře.



  1. Správa CDB Fleet v Oracle Database 18c

  2. Co dělá ::v PostgreSQL?

  3. Jak získat metadata databáze

  4. Chyba mySQL 1040:Příliš mnoho připojení