Ticket #1047 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

has_ddl_transactions property broken with MySQL and Django 1.3

Reported by: carl@… Owned by: andrew
Priority: blocker Milestone: 1.0
Component: commands Version: mercurial
Keywords: Cc:


The new has_ddl_transactions property code assumes that if the DDL_TRANSACTION_TEST table still exists and we try to create it again, DatabaseError will be raised. For MySQL in Django 1.3, this is not true; OperationalError is raised instead. This was fixed in Django in r17353. This makes South completely unusable with Django 1.3 and MySQL; it will always crash the first time has_ddl_transactions is accessed.

Not entirely sure what the best fix is - perhaps parameterize the exceptions caught there so that backends can add more exceptions to the list, and then have the MySQL backend add MySQLdb's OperationalError?

Change History

comment:1 Changed 4 years ago by andrew

  • Status changed from new to closed
  • Resolution set to fixed
  • Milestone set to 1.0

You're very much right. Fixed in [126a1ad2ee9d].

Note: See TracTickets for help on using tickets.