Django - Altere uma relação ForeignKey para OneToOne

Estou usando o sul com meu aplicativo Django. Eu tenho dois modelos que estou mudando de ter umForeignKey relação a ter umOneToOneField relação. Quando executei essa migração no meu banco de dados dev, ela funcionou bem. Quando as migrações são executadas como parte da criação de um banco de dados de teste, a migração mais recente falha com um erro do MySQL 1005: "Não é possível criar a tabela mydb. # Sql-3249_1d (erro: 121)". Ao pesquisar no Google, revelou que esse geralmente é um problema ao tentar adicionar uma restrição com o mesmo nome que uma restrição existente. A linha específica na migração em que falha é:

A relação foi alterada de:

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

par

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

que gerou as seguintes instruções na migração:

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'])

Mas, em vez de falhar nocreate_unique está falhando noalter_column ligar. Executei o seguinte comando para ver qual SQL estava sendo gerado:

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

e impresso

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 estranho que ele esteja tentando executar oADD CONSTRAINT duas vezes, mas se eu remover odb.create_unique chamada, nenhum SQL é gerado quando eu o executo com--db-dry-run, mas ainda recebo o erro se o executar de verdad

Estou perdendo aqui, qualquer ajuda é apreciada.

questionAnswers(3)

yourAnswerToTheQuestion