1. 程式人生 > 實用技巧 >實戰分享丨MySQL 與Django版本匹配相關經驗

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

摘要:關於MySQL 與Django版本匹配相關知識的經驗分享。

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 https://pypi.douban.com/simple

>>> import django
>>> django.VERSION

(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版本:

點選關注,第一時間瞭解華為雲新鮮技術~