--
Ticket URL: <https://code.djangoproject.com/ticket/18866>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* component: Uncategorized => Database layer (models, ORM)
* needs_tests: => 0
* needs_docs: => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:1>
* component: Database layer (models, ORM) => contrib.auth
* type: Uncategorized => Bug
* stage: Unreviewed => Accepted
Comment:
Yes, I've hit that several times myself. It's annoying. syncdb crashes
because it tries to create a permission with a name that's longer than 50
characters.
Possible solutions:
- improve the error message
- display a warning and truncate the value
- increase the size of the field to 200 characters (insert usual rant
about lack of migrations in core here)
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:2>
Comment (by GabrielNar89):
This is a Windows* OS/file system issue.The cause is directory paths on
the drive is longer than 255 characters (including spaces).There's a lot
of additional softwares which can fix this problem like Long Path Tool.
http://PathTooDeep.com
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:3>
Comment (by aaugustin):
The backtrace clearly comes from OS X — see the `/Users/<username>` path —
and this isn't related to the filesystem.
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:4>
Comment (by djangsters):
I added a simple validation before bulk_creation and a hint to the
verbose_name
see: https://github.com/django/django/pull/1140
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:5>
Comment (by filias):
Wouldn't it be good to have a test for this?
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:6>
* has_patch: 0 => 1
* needs_tests: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:7>
* cc: kerry@… (added)
Comment:
This also applies with a very similar error if you create your own Model
permissions in Meta with a description over 50 Chars,
{{{
class Meta:
permissions = (
("view_desks", "Can view desks"),
("track_attendance", "Can track attended/no-show with this
unfeasibly long description of over 50 Chars"),
)
}}}
I've added this comment in case it's useful to someone else following the
same route as me when identifying the problem.
Would it make sense to fix under this ticket or shall I put in a new
ticket?
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:8>
Comment (by rasca):
Related to #18959 that tracks the verbose_name errors
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:9>
Comment (by toyg):
Ok, the problem is a bit more complex, and the abovementioned patch does
not fix it.
The problem is that verbose_name is used to generate the auth_permission
table; the "name" field in that table is set to varchar(50) (at least on
PostgreSQL), but this record actually includes sentences ("Can add
<verbose_name>", "Can delete <verbose_name>" and so on); so '''the actual
practical limit is 39 characters for verbose_name'''. This is a weird
number, common knowledge is that verbose_name can be up to 50 characters.
So the real fix is either to widen that field to 61 or more (50 + "Can
delete ", which is 11 characters), or document that the limit is 39 on
non-sqlite backends.
I have a test and a fix for the validator to spot values that are too
long, but there's no point in submitting a pull request if this point
isn't settled first.
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:10>
* status: new => closed
* resolution: => duplicate
Comment:
Duplicate of #8548 and #8162
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:11>
* status: closed => new
* resolution: duplicate =>
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:12>
* owner: nobody => toyg
* status: new => assigned
Comment:
Ok, using this bug to track *validation* only - the actual limit will stay
at 39 as per #8162.
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:13>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"1ab27e9a65015373a49688f3ff6723cf85d5de56"]:
{{{
#!CommitTicketReference repository=""
revision="1ab27e9a65015373a49688f3ff6723cf85d5de56"
Fixed #18866 -- added validation error for verbose_name longer than 39
characters
Added a validation error check when creating the permissions for model, to
avoid
cryptic database error when the verbose_name is longer than 39 characters
thanks elena for reporting it
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:14>
Comment (by Marc Tamlyn <marc.tamlyn@…>):
In [changeset:"8ce3c3a9282ac19282060ddf6928b34a09d26672"]:
{{{
#!CommitTicketReference repository=""
revision="8ce3c3a9282ac19282060ddf6928b34a09d26672"
Merge pull request #1733 from joaoxsouls/#18866
Fixed #18866 -- added validation error for verbose_name longer than 39
characters
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:15>
Comment (by Tim Graham <timograham@…>):
In [changeset:"91c77eeab837ff793311ac5b0321015a4e66d6da"]:
{{{
#!CommitTicketReference repository=""
revision="91c77eeab837ff793311ac5b0321015a4e66d6da"
Avoided hardcoding Permission.name max_length
refs #18866.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18866#comment:16>