在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"
答案 0 :(得分:2)
正如您所提到的,您必须更改排序规则。最简单的方法:您可以简单地删除旧数据库并创建一个新的utf8数据库。请注意,删除数据库后,所有表和数据都将消失,因此您必须再次创建表和超级用户。所以:
创建一个新的utf8数据库:
CREATE DATABASE <new_database_name> CHARACTER SET utf8;
如果新数据库的名称与旧数据库的名称不同,请不要忘记在app setting.py文件中更改数据库名称!
创建表格;只需简单迁移:
$ python manage.py migrate
创建超级用户:
$ python manage.py createsuperuser
如果您的数据库中有一些重要数据,并且您不想丢失它们,请参阅How to convert an entire MySQL database characterset and collation to UTF-8?
或者只是使用适当的工具从旧数据库备份数据并将它们导入新的utf8创建的数据库。