django更換默認數據庫sqlite3為pymsql后出現Keyerror:255的解決辦法----升級PyMySQL


一、更換數據庫的辦法:

1、安裝PyMySQL

2、修改project目錄同名文件下的settings.py:DATABASES = {

    'default': {
# 'ENGINE': 'django.db.backends.sqlite3', 默認的
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),默認的
'ENGINE': 'django.db.backends.mysql',
'NAME': 'hello_django_db',
'USER': 'root',
'PASSWORD': '1234',
'HOST': 'localhost',
'PORT': '3306',
}
}
3、在該目錄下打開__init__.py文件,添加以下語句:
 
import pymysql
  
pymysql.install_as_MySQLdb()

然后運行 manage.py runserver,發現出現keyerro:255的錯誤;網上搜索,找到解決辦法:

二、解決
keyerro:255
主要原因是MySQL8.0更新了很多字符集,但是這些字符集長度超過255了,所以舊版的PyMySQL不支持長度超過255的字符 

導致上述問題的主要原因是KeyError: 255這個錯誤:

 
        
Traceback (most recent call last): ... File "C:\Program Files\Python36\lib\site-packages\pymysql\__init__.py", line 90, in Connect return Connection(*args, **kwargs) File "C:\Program Files\Python36\lib\site-packages\pymysql\connections.py", line 706, in __init__ self.connect() File "C:\Program Files\Python36\lib\site-packages\pymysql\connections.py", line 931, in connect self._get_server_information() File "C:\Program Files\Python36\lib\site-packages\pymysql\connections.py", line 1269, in _get_server_information self.server_charset = charset_by_id(lang).name File "C:\Program Files\Python36\lib\site-packages\pymysql\charset.py", line 38, in by_id return self._by_id[id] KeyError: 255

主要原因是MySQL8.0更新了很多字符集,但是這些字符集長度超過255了,所以舊版的PyMySQL不支持長度超過255的字符 
查看當前版本的PyMySQL:

 
         
         
        
> pip list Package Version ---------------------- ----------- PyMySQL 0.7.11

更新PyMySQL為最新版,問題解決。

 
        
 
        
 


免責聲明!

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



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