#14925: test_permission_register_order raises IntegrityError when tests are run 
and
INNODB storage engine is used for MySQL
----------------------------+-----------------------------------------------
 Reporter:  jsdalton        |       Owner:  nobody    
   Status:  new             |   Milestone:            
Component:  Authentication  |     Version:  SVN       
 Keywords:                  |       Stage:  Unreviewed
Has_patch:  0               |  
----------------------------+-----------------------------------------------
 When running tests using the trunk version of Django (rev [14992]) I get
 the following error when using the INNODB storage engine for MySQL:

 {{{
 $ ./manage.py test
 Creating test database for alias 'default'...
 
...............................................................................E..............................................................................................................................................................................................................................
 ======================================================================
 ERROR: test_permission_register_order
 (django.contrib.auth.tests.permissions.TestAuthPermissions)
 Test that the order of registered permissions doesn't break
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File
 
"/Users/jsdalton/webs/testproject/src/django/django/contrib/auth/tests/permissions.py",
 line 32, in test_permission_register_order
     create_permissions(auth_models, [], verbosity=0)
   File
 
"/Users/jsdalton/webs/testproject/src/django/django/contrib/auth/management/__init__.py",
 line 51, in create_permissions
     content_type=ctype
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/manager.py",
 line 138, in create
     return self.get_query_set().create(**kwargs)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/query.py",
 line 360, in create
     obj.save(force_insert=True, using=self.db)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/base.py",
 line 458, in save
     self.save_base(using=using, force_insert=force_insert,
 force_update=force_update)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/base.py",
 line 551, in save_base
     result = manager._insert(values, return_id=update_pk, using=using)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/manager.py",
 line 195, in _insert
     return insert_query(self.model, values, **kwargs)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/query.py",
 line 1430, in insert_query
     return query.get_compiler(using=using).execute_sql(return_id)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/sql/compiler.py",
 line 791, in execute_sql
     cursor = super(SQLInsertCompiler, self).execute_sql(None)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/models/sql/compiler.py",
 line 735, in execute_sql
     cursor.execute(sql, params)
   File
 "/Users/jsdalton/webs/testproject/src/django/django/db/backends/mysql/base.py",
 line 86, in execute
     return self.cursor.execute(query, args)
   File "/Users/jsdalton/webs/testproject/lib/python2.6/site-
 packages/MySQLdb/cursors.py", line 174, in execute
     self.errorhandler(self, exc, value)
   File "/Users/jsdalton/webs/testproject/lib/python2.6/site-
 packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
     raise errorclass, errorvalue
 IntegrityError: (1452, 'Cannot add or update a child row: a foreign key
 constraint fails (`test_ere_testproj`.`auth_permission`, CONSTRAINT
 `content_type_id_refs_id_728de91f` FOREIGN KEY (`content_type_id`)
 REFERENCES `django_content_type` (`id`))')

 ----------------------------------------------------------------------
 Ran 302 tests in 4.206s

 FAILED (errors=1)
 Destroying test database for alias 'default'...
 }}}

 This error is on a bare test project, on Mac OS X running MySQL 5.1.40. I
 am setting the storage engine via the OPTIONS key on the DATABASES setting
 as follows:

 {{{
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2',
 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
         'NAME': 'testproj',                      # Or path to database
 file if using sqlite3.
         'USER': ****                      # Not used with sqlite3.
         'PASSWORD': ****                  # Not used with sqlite3.
         'HOST': '',                      # Set to empty string for
 localhost. Not used with sqlite3.
         'PORT': '',                      # Set to empty string for
 default. Not used with sqlite3.
         'OPTIONS': {"init_command": "SET storage_engine=INNODB"},
     }
 }
 }}}

 The tests run fine with no errors when the init_command specified in
 OPTIONS above is not used.

 This isn't a huge deal for me; I primarily use INNODB in my development
 environment because of its transaction support (using the default MyISAM
 makes the test suite run intolerably slow). I can easily disregard the
 error here, and I have not experienced any other related issues in
 development.

 Note that the error message and behavior appears to be quite similar to
 what was reported in #9207; however, changing the order of content_types
 and auth in INSTALLED_APPS does not resolve it.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/14925>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to