Django - Cambiar una relación ForeignKey a OneToOne

Estoy usando South con mi aplicación Django. Tengo dos modelos que estoy cambiando de tener unaForeignKey relación a tener unOneToOneField relación. Cuando ejecuté esta migración en mi base de datos de desarrollo, funcionó bien. Cuando las migraciones se ejecutan como parte de la creación de una base de datos de prueba, la última migración falla con un error de MySQL 1005: "No se puede crear la tabla mydb. # Sql-3249_1d (errno: 121)". Hacer algunas búsquedas en Google reveló que esto suele ser un problema al intentar agregar una restricción con el mismo nombre que una restricción existente. La línea específica en la migración en la que falla es:

La relación cambió de:

class MyModel(models.Model):
    othermodel = models.ForeignKey(OtherModel)

class MyModel(models.Model):
    othermodel = models.OneToOneField(OtherModel)

que generó las siguientes declaraciones en la migración:

db.alter_column('myapp_mymodel', 'othermodel_id', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['myapp.OtherModel'], unique=True))

db.create_unique('myapp_mymodel', ['othermodel_id'])

Pero en lugar de fallar en lacreate_unique llamada, está fallando en laalter_column llamada. Ejecuté el siguiente comando para ver qué SQL se estaba generando:

python manage.py migrate myapp 0010 --db-dry-run --verbosity=2

y se imprimió

myapp:0010_auto__chg_field_mymodel_othermodel__add_unique_mymodel
   = ALTER TABLE `myapp_mymodel` ADD CONSTRAINT `myapp_mymodel_othermodel_id_uniq` UNIQUE (`othermodel_id`) []
   = SET FOREIGN_KEY_CHECKS=1; []
   = ALTER TABLE `myapp_mymodel` ADD CONSTRAINT `myapp_mymodel_othermodel_id_uniq` UNIQUE (`othermodel_id`) []

Parece extraño que esté intentando ejecutar elADD CONSTRAINT dos veces, pero si elimino ladb.create_unique call, no se genera SQL cuando lo ejecuto con--db-dry-run, pero sigo recibiendo el error si lo ejecuto de verdad.

Estoy perdido aquí, cualquier ayuda es apreciada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta