当我执行pythonmanage.py迁移时,它接受更改,但当我执行python manage.py迁移时,它抛出错误django.db.utils.OperationalError:(1074,“列'audio_file'的列长度太大(最大值= 16383);请使用BLOB或TEXT”)
我有models.py,其中我的audio_file字段是
class RadioFile(models.Model):
audio_file = models.FileField(
upload_to='radio/',
validators=[validate_file_extension],
max_length=200,
help_text="Only wav,mp1,mp2,mp3,m4p,.m5p,wma,pdf and voc files are allowed.",
)
我试图从audio_file字段中完全删除max_length,但它仍然给我这个错误。我检查其他models.py,我没有将max_length设置为max = 16383,也没有字段名称audio_file。
这个错误是从哪里来的
1条答案
按热度按时间2uluyalo1#
如果您的文件路径没有超过100个字符的限制,那么您可以在模型定义中跳过它。Django默认使用100个字符:www.example.comhttps://docs.djangoproject.com/en/4.1/ref/models/fields/#filefield
由于无法执行迁移,您可以通过
makemigrations
命令删除生成的文件。您可以在应用内的migrations目录中找到这些文件。之后,只需重新运行makemigration命令,生成一个不带max_length
属性的新迁移文件。为完整起见:如果迁移成功,您需要首先恢复这些更改。您可以使用
django-admin showmigrations
检查所有迁移。如果您需要通过一次迁移恢复(例如恢复到0003),则只需将倒数第二次迁移的编号(标记为X)输入以下命令django-admin migrate [app_label] 003
。然后,删除0004迁移文件并生成一个新文件。