首頁 > 軟體

Django執行python manage.py makemigrations報錯的解決方案分享

2022-09-02 18:02:45

1.環境

mysql 8.0

Django 3.2

pycharm 2021.11

2. (No changes detected)及解決

2.1 問題情景

# 遷移資料庫
python manage.py makemigrations 
python manage.py migrate

報錯

RuntimeWarning: Got an error checking a consistent migration history performed
for database connection 'default': (2059, <NULL>)
warnings.warn
 (No changes detected)

2.2 原因分析

MySQL 8.x加密方式:caching_sha2_password
MySQL 5.x加密方式為:mysql_native_password
所以要改成mysql_native_password

2.3 修改方式

由cmd進入命令列

登入到mysql: mysql -u username -p password

引數說明:[-u]後面接的是登入資料庫的賬號,[-p]後面是密碼

如果無法登入,可能的原因是環境變數中PATH變數沒有加入MySQL的目錄,可以新增環境變數或在開始選單中找到MySQL 8.0 Command Line Client進行登入(這種方式開啟後直接輸入密碼即可)。

檢視你的賬號加密方式

use mysql                         
select user,plugin from user
mysql> use mysql
Database changed
mysql> select user,plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| cyk              | caching_sha2_password |
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
| root             | caching_sha2_password |
+------------------+-----------------------+

輸入下面的指令進行修改

mysql> alter user '使用者名稱'@'localhost' identified with mysql_native_password by '你的密碼';

再次檢視

mysql> select user,plugin from user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| cyk              | caching_sha2_password |
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
| root             | mysql_native_password |
+------------------+-----------------------+

3. (2026, ‘SSL connection error:unknown error number‘) 及解決

3.1 問題情景

# 遷移資料庫
python manage.py makemigrations 
python manage.py migrate

報錯
Windows下django.db.utils.OperationalError: (2026, ‘SSL connection error: unknown error number‘)

3.2 原因分析

較高版本的mysql的ssl預設是開啟的

3.3 解決方案

關閉ssl

登入mysql之後,輸入該命令:

mysql> SHOW VARIABLES LIKE '%ssl%';

修改組態檔my.ini(可能要通過屬性修改許可權,否則無法修改成功)

# 路徑:C:ProgramDataMySQLMySQL Server 8.0
[mysqld]
skip_ssl  # 忽略ssl

重啟mysql服務重新執行命令

mysql> SHOW VARIABLES LIKE '%ssl%';

總結

到此這篇關於Django執行python manage.py makemigrations報錯解決的文章就介紹到這了,更多相關執行python manage.py makemigrations報錯內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com