Django&Mysql

Alpaca_發表於2018-06-21

文章僅供學習,如有錯誤,歡迎指出

今天我在做本機windows下的django專案連線linux雲伺服器上的mysql資料庫的時候,遇到了一些錯誤 在這裡記錄

問題1 連線資料庫後,當我們成功建立一張表,但是我們在資料庫中一不下心將表刪除了。然後我們使用

python manage.py makemigrations
python manage.py migrate

複製程式碼

去重新生成表的時候,發現我們無法重新生成這張表,

(django_xadmin_pb-y4pNUwd9) C:\Users\Alpaca\Desktop\pyweb專案\django_xadmin_pb\one_project>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  No migrations to apply.

複製程式碼

這個時候我們需要以下幾個步驟 1.刪除資料庫內所有的表(因為資料庫表之間有關聯,所以需要多刪除幾次) 2.重新在django專案下使用這兩條命令,生成成功

Mysql資料庫在建立資料表的時候無法建立插入中文內容 例子

這裡寫圖片描述
當我們使用django建立這張model的時候,出現錯誤


  File "C:\Users\Alpaca\.virtualenvs\django_xadmin_pb-y4pNUwd9\lib\site-packages\MySQLdb\cursors.py", line 374, in _do_query
    db.query(q)
  File "C:\Users\Alpaca\.virtualenvs\django_xadmin_pb-y4pNUwd9\lib\site-packages\MySQLdb\connections.py", line 277, in query
    _mysql.connection.query(self, query)
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE5\\x93\\x88\\xE5\\x93\\x88' for column 'name' at row 1")

複製程式碼

部分錯誤我刪除了,主要看最後幾句,他報錯原因是說,我的哈哈哈哈編碼不能建立在name裡面 檢視帖子之後說是mysql在安裝之後預設latin1編碼,但中文的話我們需要用utf8編碼 因此我們需要接下來幾個步驟去解決

#檢視錯誤原因

mysql> show variables like 'character_set%';
或者
mysql> status;
複製程式碼

這裡寫圖片描述

解釋 | character_set_client | utf8 #客戶端字符集
| character_set_connection | utf8 #連結字符集
| character_set_database | utf8 #資料庫字符集,配置檔案指定或者建立時指定
| character_set_results | utf8 #返回結果字符集
| character_set_server | utf8 #伺服器字符集,配置檔案,或者建立庫,表時候指定

1.進入到/etc/mysql/my.cnf,並新增


[client]   
  
default-character-set =utf8  
  
[mysql]   
  
default-character-set =utf8  
  
[mysqld]  
  
collation-server = utf8_unicode_ci  
init_connect ='SET NAMES utf8'  
character_set_server=utf8  

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

複製程式碼

可以看出這個my.cnf應該是個人配置,是繼承於系統預設配置的,既然這樣我們只要修改這裡的內容就好了

2.重啟mysql

service mysql restart
複製程式碼

#檢視是否成功

mysql> status;
複製程式碼

這裡寫圖片描述

已經變成了utf-8形式了

#注意!這裡有一個坑,我們雖然已經配置成功了,但是這樣的配置只會作用於之後你所建立的資料庫表,在這個配置之前的資料庫表都不適用。

該文章轉自我的csdn部落格

我的文章都會更新在我的收藏集中