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 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