【问题标题】:1366, Incorrect string value django or collate or tables in mysql.1366, mysql 中的 django 或 collat​​e 或表不正确的字符串值。
【发布时间】:2017-08-01 08:26:54
【问题描述】:

在 django 管理面板中,我尝试使用俄语符号在数据库中添加一些内容 - 它给了我错误:

(1366, "Incorrect string value: '\\xD0\\xB2\\xD1\\x84\\xD1\\x8B' for column 'name' at row 1")
Request Method: POST
Request URL:    https://giver.md/dev/admin/gift/categoryru/add/
Django Version: 1.10.4
Exception Type: OperationalError
Exception Value:    
(1366, "Incorrect string value: '\\xD0\\xB2\\xD1\\x84\\xD1\\x8B' for column 'name' at row 1")
Exception Location: /home/ubuntu/giver/server/local/lib/python2.7/site-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
Python Executable:  /home/ubuntu/giver/server/bin/python2
Python Version: 2.7.12

我知道,我需要更改排序规则来解决这个问题?但是如何使用 ubuntu 16 整理我的 mysql 数据库中的所有表? 我试过了,但这对我没有帮助:

SELECT CONCAT("ALTER TABLE ", TABLE_NAME," COLLATE utf8_general_ci") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="giver"

【问题讨论】:

    标签: mysql django collate


    【解决方案1】:

    正如您所提到的,您必须更改排序规则。最简单的方法是删除旧数据库并创建一个新的 utf8 数据库。请注意,删除数据库后,所有表和数据都将消失,因此您必须再次创建表和超级用户。所以:

    1. 新建一个 utf8 数据库:

      CREATE DATABASE <new_database_name> CHARACTER SET utf8;
      
    2. 如果新数据库名称与旧数据库不同,请不要忘记在您的应用程序 setting.py 文件中更改数据库名称!

    3. 创建表格;只需简单地迁移:

      $ python manage.py migrate
      
    4. 创建超级用户:

      $ python manage.py createsuperuser
      

    如果您的数据库中有一些重要数据并且您不想丢失它们,请参阅How to convert an entire MySQL database characterset and collation to UTF-8?

    或者简单地使用适当的工具从旧数据库中备份您的数据并将它们导入到新创建的 utf8 数据库中。

    【讨论】:

      猜你喜欢
      • 2020-06-07
      • 2017-03-18
      • 2017-06-14
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      相关资源
      最近更新 更多