任何一個稍微復雜一點的網(wǎng)站都離不開和數(shù)據(jù)進行數(shù)據(jù)交換,在用Django開發(fā)的時候需要配置數(shù)據(jù)庫,當選擇mysql數(shù)據(jù)庫時,要想django與mysql能順利“溝通”交換數(shù)據(jù),就需要一個橋梁——MySQLdb,前天晚上升級電腦ubuntu系統(tǒng)后(由14.04LTS版本升級到16.04LTS),之后電腦上以前的項目在執(zhí)行python manage.py runserver命令后就報錯了,錯誤信息是 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.18: cannot open shared object file: No such file or directory。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,同江企業(yè)網(wǎng)站建設,同江品牌網(wǎng)站建設,網(wǎng)站定制,同江網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,同江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。然后百度尋找解決方法,包括去Stackoverflow上找方法,絕大多數(shù)文章說可能是沒安裝MySQLdb,然后我就去安裝MySQLdb,但是系統(tǒng)提醒已經安裝了,提醒消息如下:Requirement already satisfied (use --upgrade to upgrade): MySQL-python==1.2.3 in /usr/local/lib/python2.7/dist-packages
這就說明系統(tǒng)里有MySQL-python,但為什么會報錯呢?想了很久,然后想到了卸載重新安裝,然后問題就解決了(哈哈,神器吧,其實我也沒弄明白這是為什么,可能和系統(tǒng)有關系,升級系統(tǒng)后,有些以前的東西可能就不好使了)。
在之前的ubuntu 14.04LTS版本上安裝MySQLdb時就遇到過很多問題,今天在這里做一下總結,這些都是我平時遇到的問題,以后可能會遇到更多,慢慢補充,有需要的朋友可以參考下(不正之處,還希望不吝賜教)。
MySQLdb安裝
安裝很簡單,如果你的電腦里有pythoneer三大神器virtualenv、fabric 和 pip(如果你是一名python開發(fā)人員,最后安裝一下,這三個工具功能確實很強大,網(wǎng)上有安裝方法,在此不做介紹),安裝MySQLdb非常簡單,一個命令就可解決。
pip install MySQL-python如果你想指定版本可以這樣
pip install MySQL-python==1.2.3如果安裝不了(前提是確保pip安裝成功,能使用),可能就是權限問題,此時在pip前加上sudo即可。
但是,你以為這樣就好了嗎?在windows系統(tǒng)下這樣可能就好了,但是在ubuntu系統(tǒng)下不行,它需要一些依賴包,安裝命令如下:
sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev sudo apt-get install python-dev然后import MySQLdb,沒報錯的話,就是安裝成功
2.在執(zhí)行python manage.py runserver常見問題
(1)錯誤:mysql_config not found
解決辦法:安安裝mysqld-dev包,安裝命令上面有
(2)錯誤:_mysql.c:2810: error: expected declaration specifiers before 'init_mysql'
解決辦法:安裝python-dev
(3)錯誤:ImportError: No module named setuptools
解決辦法:安裝setuptools
sudo apt-get install python-setuptools
(4)錯誤1193, "Unknown system variable 'storage_engine'
可能與django的數(shù)據(jù)庫配置有關系或者mysql配置文件有關,
在數(shù)據(jù)庫配置中加一句:
'OPTIONS': {
'init_command': 'SET default_storage_engine=INNODB',
},
即可解決問題。
MySQL5.5以后默認的數(shù)據(jù)庫存儲引擎是innod,我用的是5.7版本,而我之前的配置是
'OPTIONS': {
'init_command': 'SET storage_engine=MyISAM',
},
所以會報錯,所以這里有兩種修改方法,一種就是改django setting文件,另一種就是改mysql配置文件etc/mysql/my.cnf,加一句SET default_storage_engine=MyISAM,但不管怎么改,兩者應該要保持一致。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。