﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
18959	Error message for table names > 50 characters is very poor.	Steve Lacy	ANUBHAV JOSHI	"If you try to create a model with a table name > 50 characters (and you've enabled django.contrib.auth) then you get a very poor error message when running syncdb. 

For example: 


{{{
env src/tmp/qdel$ python ./manage.py syncdb
Creating tables ...
Traceback (most recent call last):
  File ""./manage.py"", line 10, in <module>
    execute_from_command_line(sys.argv)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/__init__.py"", line 443, in execute_from_command_line
    utility.execute()
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/__init__.py"", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/base.py"", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/base.py"", line 232, in execute
    output = self.handle(*args, **options)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/base.py"", line 371, in handle
    return self.handle_noargs(**options)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py"", line 110, in handle_noargs
    emit_post_sync_signal(created_models, verbosity, interactive, db)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/core/management/sql.py"", line 189, in emit_post_sync_signal
    interactive=interactive, db=db)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py"", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py"", line 54, in create_permissions
    auth_app.Permission.objects.bulk_create(objs)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/models/manager.py"", line 140, in bulk_create
    return self.get_query_set().bulk_create(*args, **kwargs)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/models/query.py"", line 416, in bulk_create
    self.model._base_manager._insert(objs_without_pk, fields=[f for f in fields if not isinstance(f, AutoField)], using=self.db)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/models/manager.py"", line 203, in _insert
    return insert_query(self.model, objs, fields, **kwargs)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/models/query.py"", line 1576, in insert_query
    return query.get_compiler(using=using).execute_sql(return_id)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py"", line 910, in execute_sql
    cursor.execute(sql, params)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/backends/util.py"", line 40, in execute
    return self.cursor.execute(sql, params)
  File ""/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py"", line 52, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: value too long for type character varying(50)

}}}


  * Doesn't tell me which model 
  * Doesn't say ""generated table name is too long""
  * Works if django.contrib.auth isn't in INSTALLED_APPS, fails otherwise.
  * Can fail if model name < 50 characters when the app name is long.   (since table name is concatenation of app & model class names) 
  
I'd guess that the solution is to catch the DatabaseError in contrib/auth/management/__init__.py create_permissions() and log some useful message there then re-raise. "	Cleanup/optimization	closed	contrib.auth	dev	Normal	duplicate	permission	charette.s@…	Accepted	0	0	0	0	0	0
