【问题标题】:django admin crashes when trying to update record but not when inserting a new onedjango admin 在尝试更新记录但插入新记录时崩溃
【发布时间】:2023-04-11 07:25:02
【问题描述】:

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

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

我是 django 的新手,每个人都可以从过去的问题中看到...但需要变得非常强大,非常快...问题是它对我来说真的不是那么顺利...

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

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

当我尝试编辑投票记录(如果有人知道 django 1.3 tutrial)时,站点崩溃,但出现以下异常:

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

在同一张表中添加一条新记录是没有问题的,只是为了编辑一个......

如果有人知道这件事......

# Create your models here.

类投票(models.Model): 问题 = models.CharField(max_length=200) pub_date = models.DateTimeField('发布日期')

def __unicode__(self):
    return self.question

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

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

但是,我还是不明白为什么我可以添加记录但不能编辑它们……这不是很奇怪吗?

【问题讨论】:

  • 您为投票输入了哪些数据?有非英文字符吗?
  • 你能展示你的模型吗?
  • 10x,我已经添加了一些东西......谢谢你的帮助,现在,我输入的所有数据都是英文......我的东西是 python-mysql 编码就是这样做的……不知道该怎么办……

标签: python mysql django django-admin


【解决方案1】:

我遇到了同样的问题,但使用的是 Django 1.4。我使用了 photoionized 的推荐,但适应了这个版本(auth_message 没有了,但你可以在django_admin_log 中找到change_message)。所以:

ALTER TABLE django_admin_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 在看到编辑的底部之后,这确实是问题所在。我不确定你为什么也可以添加条目(也许 python->mysql 连接器正在幕后进行一些字符转换?),但我很确定这是你的问题。尝试运行 ALTER TABLE auth_message CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 之类的东西。
    • 10x,我什么都试过了...表格设置为拉丁文,我已将其更改为 utf-8...但仍然收到相同的消息... p.s.我需要在表格中检查什么,除此之外...表格是空的...只是表格的聊天集是我改变的
    • 执行SHOW CREATE TABLE auth_message;,它应该会显示表格本身的设置。此外,您可能想尝试设置数据库本身的默认排序规则/字符集。
    • 10x,得到它解决了....数据库的所有字符集都不好....我是一名初学者开发人员,正在使用 Mac....我正在使用手动安装 MAMP 并使用它......但是成功......有点时间。在我看来......它引起了很多问题......现在我有很多副本......但最终设法从 MySQL 网站返回 MySQL 并使用 python 服务器而不是 Apache (仅用于开发)因为似乎所有生产的东西都不是为 mac....(Apache,pythonMySQLMySQLdb)所以回到基本的....
    • 现在我只希望当我安装产品(Ubuntu 10.4 或 10.10..还不知道)时它会更好地工作..从 MS 到开源很难.. ..确实很难...
    【解决方案3】:

    打开你的 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': '',                   
        }
    }
    

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

    【讨论】:

    • 10x,已修复...但又是 10x...:-)
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2021-12-21
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多