0

在 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"
4

1 回答 1

2

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

  1. 创建一个新的 utf8 数据库:

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

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

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

    $ python manage.py createsuperuser
    

如果您的数据库中有一些重要数据并且您不想丢失它们,请参阅如何将整个 MySQL 数据库字符集和排序规则转换为 UTF-8?

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

于 2018-06-13T00:10:22.160 回答