最近在用Django寫個網站,鏈接mysql的時候出現了幾個問題,總結一下python
寫好setting.py和models.py後,syncdb都沒什麼問題,在測試後臺發表文章的時候就出錯了,原本是測試markdown的圖片與codelite代碼高亮,發現發表後debug模式就報錯mysql
Error:Warning: Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95...' for column 'object_repr' at row 1sql
查了一下發現是mysql的默認編碼的問題,照着網上的改了/etc/mysql/my.cnf後不行,在client里加上default-character-set=utf8直接致使mysql啓動不起來了,而後在mysqld裏寫上了default-character-set=utf8,仍是不行,因而直接手動修改數據庫使用的編碼數據庫
ALTER DATABASE pyblog DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
從新刪除以前的數據庫從新創建數據庫遂搞定。服務器
昨天關機後發現今天 MySQL重啓 報錯 Can't connect to local MySQL server through socketmarkdown
看了下個人/var/run/mysqld和/var/lib/mysqld的目錄裏都沒有mysqld.sock,也無法像網上那樣直接ln -s /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock軟連接過去,而後找到了一個方法在root下socket
/usr/bin/mysql_install_db
而後再看/var/run/mysqld/目錄下應該就已經有mysqld.sock了測試
mysql_install_db 腳本的目的是生成新的MySQL受權表。它不覆蓋已有的MySQL受權表,而且它不影響任何其它數據。若是你想要從新建立受權表,首先中止mysqld服務器網站
重啓mysql而後再python manage.py runserver發現搞定了編碼