摘要:關於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版本: