1. 程式人生 > >django所遇到問題簡單總結

django所遇到問題簡單總結

ans dos def 輸入 django 沒有 gb2 file wpa

問題雖小,但卻值得深思

一、改mysql密碼

方法1: 用SET PASSWORD命令
首先登錄MySQL。
格式:mysql> set password for 用戶名@localhost = password(‘新密碼‘);
例子:mysql> set password for root@localhost = password(‘123‘);

方法2:用mysqladmin
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
例子:mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接編輯user表


首先登錄MySQL。
mysql> use mysql;
mysql> update user set password=password(‘123‘) where user=‘root‘ and host=‘localhost‘;
mysql> flush privileges;

方法4:在忘記root密碼的時候,可以這樣
以windows為例:
1. 關閉正在運行的MySQL服務。
2. 打開DOS窗口,轉到mysql\bin目錄。
3. 輸入mysqld --skip-grant-tables 回車。--skip-grant-tables 的意思是啟動MySQL服務的時候跳過權限表認證。
4. 再開一個DOS窗口(因為剛才那個DOS窗口已經不能動了),轉到mysql\bin目錄。
5. 輸入mysql回車,如果成功,將出現MySQL提示符 >。
6. 連接權限數據庫: use mysql; 。
6. 改密碼:update user set password=password("123") where user="root";(別忘了最後加分號) 。
7. 刷新權限(必須步驟):flush privileges; 。
8. 退出 quit。
9. 註銷系統,再進入,使用用戶名root和剛才設置的新密碼123登錄。

我選擇i了方法二、一般皆如此,沒有設置權限,結果導致了後面django在python manage.py makemigrations的時候報1045 error 的問題

二、django 1045 error

Access denied for user ‘root‘@‘localhost‘ (using password: YES)

在一番搜索下,找到問題來源,權限問題

ERROR 1045: Access denied for user: ‘root@localhost‘ (Using password: YES)
前兩天也偶爾出現這個錯誤,也沒在意,因為我重新修改一下mysql的root密碼後又可以用了,但昨天卻不行,我把root密碼修改以後雖然當時能用,一旦重新進入就都不能用了,可我的密碼明明沒有錯啊?今天終於找到了原因,是權限問題,大家可以參考著下面兩篇文章去看一下: http://topic.csdn.net/t/20060117/15/4521496.html# http://doc.99net.net/doc/database/1076488199/1076549732.html 由於以前從來沒有遇到過這種情況,故把解決方法記錄於此,以便今後自己查閱,具體方法就是你在改root密碼的時候再加上一句給權限的語句:
grant all on mysql.* to ‘root‘@‘localhost‘ identified by ‘password‘;
最後那個password即是你要修改的root用戶的密碼
剛開始用mysql就給我來了個下馬威,前些天完整完數據庫後安裝手冊修改了一下root用戶的密碼,然後用root用戶再登陸是一切OK。可是今天再登陸時就報1045錯誤代碼。 錯誤代碼 1045
Access denied for user ‘root‘@‘localhost‘ (using password:YES)
我的解決辦法是重新設置root用戶密碼,在Windows平臺下操作步驟如下:
1、以系統管理員身份登錄到系統;
2、如果MySQL服務器正在運行,停止它。
如果是作為Windows服務運行的服務器,進入服務管理器:開始菜單->控制面板->管理工具->服務
如果服務器不是作為服務而運行的,可能需要使用任務管理器來強制停止它。
3、創建1個文本文件,並將下述命令置於單一行中:
SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘MyNewPassword‘);
用任意名稱保存該文件。在本例中,該文件為C:\mysql-init.txt。
4、進入DOS命令提示:開始菜單->運行-> cmd
假定你已將MySQL安裝到C:\mysql。如果你將MySQL安裝到了另一位置,請對下述命令進行相應的調整。
在DOS命令提示符下,執行命令:
C:\mysql\bin\>mysqld-nt --init-file=C:\mysql-init.txt
在服務器啟動時,執行由“--init-file”選項(作用:在啟動時從指定的文件中讀取SQL命令)命名的文件的內容,更改根用戶密碼。當服務器成功啟動後,應刪除C:\mysql-init.txt。
5、如果起動MySQL服務器出錯,把進程mysqld-nt.exe關閉。然後重啟它,OK。
6、或者停止MySQL服務器,然後在正常模式下重啟它。如果以服務方式運行服務器,應從Windows服務窗口啟動它。如果以手動方式啟動了服務器,能夠像正常情形下一樣使用命令。
應能使用新密碼進行連接。

三、re_path和path

目前 路由(url)到視圖(View)的流程可以概括為四個步驟:

  1. url匹配
  2. 正則捕獲
  3. 變量類型轉化
  4. 視圖調用

Django2.0 和之前相比多了 變量類型轉化 這一步驟。

新的path語法可以解決一下以下幾個場景:

  • 類型自動轉化
  • 公用正則表達式

問題描述可參考 “問題引入” 一節。

四、mysql中文顯示亂碼

技術分享圖片

show variables like‘%char%‘;查詢編碼

關於GBK、GB2312、UTF8

UTF- 8:Unicode Transformation Format-8bit,允許含BOM,但通常不含BOM。是用以解決國際上字符的一種多字節編碼,它對英文使用8位(即一個字節),中文使用24為(三個字節)來編碼。UTF-8包含全世界所有國家需要用到的字符,是國際編碼,通用性強。UTF-8編碼的文字可以在各國支持UTF8字符集的瀏覽器上顯示。如,如果是UTF8編碼,則在外國人的英文IE上也能顯示中文,他們無需下載IE的中文語言支持包。

GBK是國家標準GB2312基礎上擴容後兼容GB2312的標準。GBK的文字編碼是用雙字節來表示的,即不論中、英文字符均使用雙字節來表示,為了區分中文,將其最高位都設定成1。GBK包含全部中文字符,是國家編碼,通用性比UTF8差,不過UTF8占用的數據庫比GBD大。

GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉換:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312

對於一個網站、論壇來說,如果英文字符較多,則建議使用UTF-8節省空間。不過現在很多論壇的插件一般只支持GBK。

GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韓字符的大字符集合
如果是中文的網站 推薦GB2312 GBK有時還是有點問題
為了避免所有亂碼問題,應該采用UTF-8,將來要支持國際化也非常方便
UTF-8可以看作是大字符集,它包含了大部分文字的編碼。
使用UTF-8的一個好處是其他地區的用戶(如香港臺灣)無需安裝簡體中文支持就能正常觀看你的文字而不會出現亂碼。

gb2312是簡體中文的碼
gbk支持簡體中文及繁體中文
big5支持繁體中文
utf-8支持幾乎所有字符

首先分析亂碼的情況

MySQL中涉及的幾個字符集

character-set-server/default-character-set:服務器字符集,默認情況下所采用的。
character-set-database:數據庫字符集。
character-set-table:數據庫表字符集。
優先級依次增加。所以一般情況下只需要設置character-set-server,而在創建數據庫和表時不特別指定字符集,這樣統一采用character-set-server字符集。
character-set-client:客戶端的字符集。客戶端默認字符集。當客戶端向服務器發送請求時,請求以該字符集進行編碼。
character-set-results:結果字符集。服務器向客戶端返回結果或者信息時,結果以該字符集進行編碼。
在客戶端,如果沒有定義character-set-results,則采用character-set-client字符集作為默認的字符集。所以只需要設置character-set-client字符集。

要處理中文,則可以將character-set-server和character-set-client均設置為GB2312,如果要同時處理多國語言,則設置為UTF8。

關於MySQL的中文問題

解決亂碼的方法是,在執行SQL語句之前,將MySQL以下三個系統參數設置為與服務器字符集character-set-server相同的字符集。
character_set_client:客戶端的字符集。
character_set_results:結果字符集。
character_set_connection:連接字符集。
設置這三個系統參數通過向MySQL發送語句:set names gb2312

五、No changes detected

刪除緩存後還需setting改一下INSTALLED_APPS

參考鏈接https://www.jb51.net/article/140960.html

六、chcp 65001

在mysql數據庫中文顯示亂碼的情況下以為cmd的默認gbk字符導致了此問題,故采用了chcp 65001的方式換成utf-8的cmd去讀取數據,仍然顯示error,此方法不推薦使用

django所遇到問題簡單總結