【问题标题】:Can't migrate Django app - MySQL throws an OperationalError "Too big scale specified"无法迁移 Django 应用程序 - MySQL 抛出 OperationalError “Too big scale specified”
【发布时间】:2016-11-12 08:36:56
【问题描述】:

我正在尝试将我的 Django 应用程序连接到 MySQL 数据库。我创建了数据库,并尝试使用python manage.py migrate 迁移应用程序。此时我收到以下错误:

django.db.utils.OperationalError: (1425, "Too big scale 100 specified for column 'score'. Maximum is 30.")

我在models.py 中检查了该对象。它看起来像这样:

class Para(models.Model):
    ...
    text = models.CharField(max_length=20000)
    score = models.DecimalField(max_digits=100, decimal_places=5)

    def __unicode__(self):
        return self.text[:20]

所以我将max_digits 更改为20,运行makemigrations 并再次尝试迁移。但我不断收到同样的错误。我是 MySQL 新手,不知道我做错了什么。

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: python mysql django migration


    【解决方案1】:

    改成

    score = models.DecimalField(max_digits=20, decimal_places=5)
    

    随后的另一个 makemigrations 将不起作用(正如您已经发现的那样),因为之前的迁移是您的服务器阻塞的原因。最简单的解决方案,删除最近的两个迁移(假设您没有进行任何其他更改)。然后运行

    ./manage.py makemigrations
    ./manage.py migrate
    

    【讨论】:

    • 谢谢,就是这样。它现在抛出另一个错误-“'行大小太大。使用的表类型的最大行大小,不包括 BLOB,是 65535。这包括存储开销,请查看手册。您必须将某些列更改为 TEXT 或 BLOB' " 但是第一个已经消失了!
    • 对于像text = models.CharField(max_length=20000) 这样的字段,您很可能会用尽最大行大小。请用您的完整模型发布另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多