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为最新版,问题解决。

 
 
 

猜你喜欢

转载自www.cnblogs.com/zkkysqs/p/9192160.html