django admin在尝试更新记录时崩溃,但在插入新记录时却没有崩溃

时间:2011-04-12 15:29:19

标签: python mysql django django-admin

我遇到了一个奇怪的问题:

developpemnt的技术信息(生产将在linux / apache / Mysql上) macosx 2.6.6 python 2.6.1 django 1.3 mysql 5.1 和MySQLdb将python连接到MySQL ...

我是django的新手,因为每个人都可以从过去的问题中看到......但是需要真正强大,真的很快......问题是它对我来说真的不那么顺利...... / p>

好的,对于这个问题。我正在做django教程(不是为了好玩,我需要非常快速地学习它,因为我需要开发一个庞大的系统)。

我现在完成了所有教程,并且在我添加管理员的阶段。

当我尝试编辑民意调查记录时(如果有人知道django 1.3 tutrial),该网站崩溃时出现以下异常:

  

警告/ admin / polls / poll / 2 /   字符串值不正确:第1行第'change_message'列的'\ xD7 \ xA9 \ xD7 \ x95 \ xD7 \ xA0 ...'

将新记录添加到同一个表中没有问题,只需编辑一个....

如果有人知道它的任何事情......

# Create your models here.

类轮询(models.Model):     question = models.CharField(max_length = 200)     pub_date = models.DateTimeField('date published')

def __unicode__(self):
    return self.question

def was_published_today(self):
    return self.pub_date.date() == datetime.date.today()

这是模型,我看到的另一个,我的MySQL数据库是latin1而不是UTF-8 ... python是unicode ....也许这就是问题....

但是,我仍然无法弄清楚为什么我可以添加记录但无法编辑它们....这不是奇怪的部分吗?

4 个答案:

答案 0 :(得分:4)

我遇到了同样的问题但是使用了Django 1.4。我使用了 photoionized 的建议但适应了此版本(其中auth_message已消失,但您可以在change_message中找到django_admin_log)。所以:

ALTER TABLE django_admin_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

答案 1 :(得分:1)

听起来像数据库字符集问题。你能检查一下数据库中auth_message表的默认字符集吗?

如果您的表无法处理utf8,则会抛出此错误。

答案 2 :(得分:1)

打开mysql shell并运行以下命令:

mysql> show variables like  'character\_set\_%';

上面是否有utf8个值?

假设这是一个mysql问题,请将数据库设置换成sqlite3:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sqlite3',           
        'USER': '',                      
        'PASSWORD': '',                  
        'HOST': '',                     
        'PORT': '',                   
    }
}

同步并尝试再次输入一些数据。

答案 3 :(得分:0)

在表'django_admin_log'中找到列'change_message'。将字符集更改为utf-8默认值。完成