首页 > 解决方案 > django makemigrations 中的操作错误 1050 错误“表已存在”

问题描述

嗨,无论我尝试更改我的模型或尝试迁移,我都会使用 mysql 和 django 1.8.6

每次我进行迁移时都会出现操作错误 1050 错误“表 'products_myproducts' 已存在”

class Product(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    managers = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name="managers_product",blank=True)
    media = models.ImageField(blank=True,null=True,
            upload_to=download_media_location,
            storage=FileSystemStorage(location=settings.PROTECTED_ROOT))
    title = models.CharField(max_length=30)
    description = models.TextField(default='',blank=True)
    slug= models.SlugField(blank=True,unique=True)
    price = models.DecimalField(max_digits=60,decimal_places=2,default=9.99)
    sale_active = models.BooleanField(default=False)
    sale_price = models.DecimalField(max_digits=60,decimal_places=2,default=6.99,null=True,blank=True)
    def __str__(self):
        return self.title

也适用于我的产品

class MyProducts(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    products = models.ManyToManyField(Product,blank=True)

    def __str__(self):
        return "%s" %(self.products.count())

    class Meta:
        verbose_name = "My Products"
        verbose_name_plural = "My Products"

标签: pythonmysqldjangodatabase

解决方案


当您从应用程序中删除迁移目录而不删除数据库表时,会导致此错误。
如果数据库上的数据很重要,只需备份表单数据,然后删除数据库表。
然后从每个应用程序和 makemigration 中删除所有迁移目录,然后再次迁移并导入您的数据。


推荐阅读