gpt4 book ai didi

python - django 中的 syncdb 问题

转载 作者:行者123 更新时间:2023-11-29 00:13:59 25 4
gpt4 key购买 nike

为什么我的 Django 应用程序总是出现此错误?我在标准的 webfaction 上使用 mysql,我已将其设置为 UTF8 - 我真的无法解决这个问题

“无法为提要安装索引。流派模型:指定的 key 太长;最大 key 长度为 767 字节”

这是我的模型

from django.db import models
import uuid
import os


class Messages(models.Model):
name = models.CharField(max_length=255)
message = models.CharField(max_length=255)
show = models.DateTimeField(auto_now_add=True)
hide = models.DateTimeField()
def __unicode__(self):
return self.name





class Genre(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=300)
meta = models.TextField(max_length=300)
description = models.TextField(max_length=300)
created = models.DateTimeField(auto_now_add=True)
listing = models.BooleanField(default=True)
def __unicode__(self):
return self.name


class Category(models.Model):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=300)
meta = models.TextField(max_length=300)
description = models.TextField(max_length=300)
created = models.DateTimeField(auto_now_add=True)
listing = models.BooleanField(default=True)
def __unicode__(self):
return self.name



class Images(models.Model):
name = models.CharField(max_length=50)
def get_file_path(instance, filename):
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join( 'images' , filename)
image = models.ImageField(upload_to = get_file_path, null=True, blank=True)
def __unicode__(self):
return self.name




class Gallery(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=300)
meta = models.TextField(max_length=300)
description = models.TextField(max_length=300)
images = models.ManyToManyField(Images)
def __unicode__(self):
return self.name


class Article(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=300)
category = models.ManyToManyField(Category)
link = models.URLField(max_length=255)
meta = models.URLField(max_length=255)
description = models.TextField(max_length=300)
content = tinymce_models.HTMLField()
source_name = models.CharField(max_length=50)
source_link=models.URLField()
created = models.DateTimeField(auto_now_add=True)
listing = models.BooleanField(default=True)
def get_file_path(instance, filename):
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join( 'images' , filename)
image = models.ImageField(upload_to = get_file_path, null=True, blank=True)
def __unicode__(self):
return self.name

最佳答案

我认为这是 MySQL 中 VARCHAR 字段长度的问题。

您正在使用 SlugField,在后台这也使用与 CharField 相同的方式使用 VARCHAR。相同的长度限制适用于这两个字段,因此在您的 slug 字段中设置 max_length=300 是一个问题(300 * 3 字节是 900 字节,超过了最大值 767,如错误所示。如果您想知道 767 的来源,255 chars * 3 bytes per char 是 765 字节 + 2 bytes prefix )。

SlugField 字段的 max_length 属性减少到 255,就可以了。

关于python - django 中的 syncdb 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com