我遇到了一个奇怪的问题:
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 ....也许这就是问题....
但是,我仍然无法弄清楚为什么我可以添加记录但无法编辑它们....这不是奇怪的部分吗?
答案 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默认值。完成