實戰分享丨MySQL 與Django版本匹配相關經驗

qwer1030274531發表於2020-09-08

run

(env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python manage.py migrate

報錯程式碼提示如下:

raise errorclass(errno, errval)
django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")
During handling of the above exception, another exception occurred:

 

根據提示分析報錯原因:

Django2.1 不再支援MySQL5.5,必須mysql5.6版本以上

查mysql版本和Django版本:

mysql 版本:

 

Django 版本:

 

根據原因分析得出解決思路:

二選一

(1)Django降級到2.0

(env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> pip install Django==2.0.0 -i 

 

>>> import django
>>> django.VERSION

https://bbs-img.huaweicloud.com/blogs/img/1596282754316021113.png

(env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> python .\manage.py makemigrations
No changes detected
(env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>
(env) PS E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro> python .\manage.py migrate

 

 

成功連線資料庫。

(2)MySQL升級

1. 檢視 MySQL 的版本

mysql --version
mysql  Version 14.14 Distrib 5.5.28, for Linux (x86_64) using reeadline 5.1
從上面可以看出,MySQL版本為5.5.28

2. 檢視 MySQL 的安裝包

yum list | grep mysql
注意:如果沒有看到想要升級的版本,請更新yum安裝庫,具體操作如下:
1) wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
2) rpm -ivh mysql-community-release-el6-5.noarch.rpm
3) 重新檢視即可,yum list | grep mysql

3. 檢視當前已經安裝的 MySQL 安裝相關資訊

yum list | grep ^mysql
注意:這裡的^代表以mysql開頭的項
-----------
yum info mysql-server
據說,上面的命令執行完畢後可以看到可升級的版本,但是並沒看到。
-----------
yum check-update mysql-server
可以檢查可用的安裝包

4. 升級 MySQL 及其元件

yum update mysql-server
執行結束,會顯示complete之類的關鍵字。

5. 檢查是否更新成功

mysql --version
當然,執行完這一步並不代表已經可以用MySQL了。在這裡,可能碰到了一個錯誤。

問題 1

啟動服務的時候,提示找不到 mysql.sock 之類的問題。

解決方案:

1.檢視錯誤日誌(前提:my.cnf裡面有配置日誌功能log-error = 路徑)
cat /var/log/mysql_error.log
2.發現skip-locking5.6不支援,已經過時。改為skip-extenal-locking
(skip-locking可參考連結:)
3.儲存退出,重啟mysqld服務即可

問題 2

啟動服務的時候,錯誤日誌顯示 Unknown/unsupported storage engine: InnoDB

解決方案:

執行刪除命令: rm -rf /var/lib/mysql/ib*
刪除: ibdata1 ib_logfile0 ib_logfile1 檔案
重啟服務即可, service mysqld restart

當然,你可能會想,如果更新的版本存在5.5、5.6甚至更高,但我只是想更新到指定版本呢?那應該怎麼做?

其實很簡單,只要在上訴操作中更新前,改動 repo 配置檔案即可。

配置檔案路徑:/etc/yum.repos.d
修改配置檔案:mysql-community.repo和mysql-community-source.repo
修改內容:將所要更新的版本的enabled=1,其他版本的enabled=0即可,如下圖所示,只更新到mysql 5.6版本:

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2717860/,如需轉載,請註明出處,否則將追究法律責任。

相關文章