一、Django 和 MySQL 版本兼容問題
1、Django2.0 後均不再支持 Python2,Django2.0是最後一個支持Python3.4的版本。
2、Django2.1 不再支持MySQL 5.5,必須MySQL 5.6版本以上
二、Nginx 在 python 虛擬環境中遇到的問題
1、需要在 settings.py 同級目錄下的 __init__.py 中添加 虛擬路徑包目錄和包引入
import sys
sys.path.append("/web/env/ims/lib/python3.6/site-packages") # 虛擬環境包目錄
import pymysql
pymysql.install_as_MySQLdb()
2、上線後出現問題不會打印在屏幕上,需要查看錯誤日誌。
3、建立 requirements.txt 文件,在虛擬環境中更便捷的搭建環境,使用安裝命令安裝:
pip install -r requirements.txt
mysqlclient==1.3.13
django==2.1.1
PyMySQL==0.9.2
三、Navicat連接服務器MySQL數據庫出現的問題
1、Host is not allowed to connect to this MySQL server
【描述】數據庫連接不被運行,原因在於權限管理中沒有主機IP
【解決】
① use mysql;
② select host,user from user;
③ update user set host='%' where user='root';
④ flush privileges;
2、Authentication plugin 'caching_sha2_password' cannot be loaded;
【描述】出現這個原因是mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password, 解決問題方法有兩種,一種是升級navicat驅動,一種是把mysql用戶登錄密碼加密規則還原成mysql_native_password.
【解決】
① 先查看要給哪個用戶修改規則,注意 root的host是否是 '%'
use mysql;
select user,host from user;
② 執行規則更新
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
③ 刷新
FLUSH PRIVILEGES;
④ 重置密碼
alter user 'root'@'localhost' identified by '你要設置的新密碼';