python+Django+test 測試數據庫生成報錯


前提:

使用Django自帶的test進行單元測試。

問題描述:

運行:python manage.py test,報錯,出現數據庫亂碼的現象,報錯如下:

Creating test database for alias 'default'...

Got an error creating the test database: (1007, u"Can't create database 'test_yd_zy_bank'; database exists")

Type 'yes' if you would like to try deleting the test database 'test_yd_zy_bank', or 'no' to cancel: yes

Destroying old test database 'default'...

(1366, u"Incorrect string value: '\\xE7\\xA4\\xBA\\xE4\\xBE\\x8B...' for column 'func_name' at row 1")

.............

django.db.utils.InternalError: (1366, u"Incorrect string value: '\\xE5\\x8A\\x9F\\xE8\\x83\\xBD...' for column 'name' at row 1")

其中name字段加入了中文,導致亂碼。

錯誤分析:

test生成的臨時數據庫默認不是utf8,不支持中文,導致錯誤。嘗試過修改項目數據庫的字符編碼,並沒有效果,因為test使用的數據庫數據是臨時生成的,並不適用項目配置的數據庫

解決辦法:

在settings.py中添加對database的描述,設置字符編碼默認設置:

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

最后改完如下:

 

最后,再次運行python manage.py test,成功。

補充 :自定義測試數據庫名字時的配置如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM