django test数据库乱码

问题描述

在django项目中添加test测试,出现数据库乱码的现象,报错:
SyncError: (1366, "Incorrect string value: '\\xE9\\x85\\x92\\xE5\\xBA\\x97' for column 'organization' at row 1")
其中organization这个字段加入了中文,导致乱码

分析

问题原因在于test生成的临时数据库默认不是utf8,不支持中文,导致错误。
尝试过修改项目数据库的字符编码,并没有效果,因为test使用的数据库数据是临时生成的,并不适用项目配置的数据库

解决方法

在settings.py中添加对database的描述,设置字符编码默认设置
如下:

'TEST_CHARSET': 'utf8',        
'TEST_COLLATION': 'utf8_general_ci',

比如一个项目中database设置:

DATABASES = {
    'default': {              
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'yourname',
        'USER': 'youruser',
        'PASSWORD': 'youpsd',
        'HOST': '127.0.0.1',
        'PORT': 'yourport',
        'TEST_CHARSET': 'utf8',        
        'TEST_COLLATION': 'utf8_general_ci',
    }
}

参考:
https://docs.djangoproject.com/en/1.7/ref/settings/
http://blog.csdn.net/shanliangliuxing/article/details/9119649

你可能感兴趣的:(python)