PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Устройството на Django се проваля, като се посочва DatabaseError:стойността е твърде дълга за тип символ варира (50)

Актуализация:ограничението от 50 символа вече е 255 в Django 1.8

--

Оригинален отговор:

Току-що се сблъсках с това този следобед и имам решение (някакъв вид)

Тази публикация тук предполага, че това е грешка в Django, свързана с дължината на стойността, позволена за auth_permission. По-нататъшното копаене подкрепя тази идея, както и този билет за Django (въпреки че първоначално е свързан с MySQL).

По принцип се създава име на разрешение въз основа на verbose_name на модел плюс описателен низ за разрешение и това може да прелее до повече от 50 знака, разрешени в auth.models.Permission.name.

За да цитирате коментар за билета на Django:

Най-дългите префикси за стойността на низа в колоната auth_permission.name са „Може да променя“ и „Може да изтрива“, и двата с 11 знака. Максималната дължина на колоната е 50, така че максималната дължина на Meta.verbose_name е 39.

Едно решение би било да хакна тази колона, за да поддържа> 50 знака (в идеалния случай чрез миграция на юг, казвам, така че да е лесно повторима), но най-бързото и най-надеждното решение, за което се сетих, беше просто да направя моята изключително дълга дефиниция на verbose_name много по-кратък (от 47 знака в verbose_name до около 20). Всичко работи добре сега.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Диалектът трябва да бъде изрично предоставен от v4.0.0

  2. Лош дизайн ли е да се използват масиви в база данни?

  3. Изпълнение на множество екземпляри на PostgreSQL на един хост

  4. Как да нулирате работещия SUM, след като достигне праг?

  5. Как да възстановите непоследователен PostgreSQL Slave