問題:在終端中向mysql中寫入中文,報錯
原因:查詢了一下mysql的字符集
錯誤在於mysql-server的字符集為latin1,終端的字符集是utf8,所以寫入報錯
解決: 將mysql伺服器的字符集改為utf8 ,具體方式如下:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf在[mysqld]段落中新增如下兩行:
character-set-server=utf8重啟mysql:collation-server=utf8_general_ci
service mysql restart然後登入mysql,檢視資料庫字符集設定:
show variables like '顯示character%
';
檢視字符集排序設定:
show variables like '顯示collation_%
';
以上就大功告成了
alert database db1 character set utf8;
但是舊table的字符集是沒有改變的,將舊table的字符集改變為utf8
alter table tb convert to character set utf8;
注:資料無價,注意備份。
幾種方式的比較:
第一種方式只是暫時起作用,新建的庫和表是utf8的格式,但mysql重新啟動後就會失效,變成原來的字符集
第二種方式更改的是mysql伺服器的字符集,再建立的資料庫和表都是utf8的字符集,但是原來資料庫和表的字符集沒有改變
第三種方式只能將現有的資料庫和表更改為utf8,以及更改為utf8的資料庫再建立的表字符集為utf8,但mysql伺服器的字符集沒有改變,新建的database格式仍然不正確
每種方式有自己的特點,結合起來用會更好
mysql字符集修改 MySql字符集修改
問題分析 普通的字串或者表情都是佔位3個位元組,所以utf8足夠用了,但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了,為了應對無線網際網路的機遇和挑戰 避免 emoji 表情符號帶來的問題 涉及無線相關的 mysql 資料庫建議都提前採用 utf8mb4 字符集,這必須要作為移動網際...
mysql修改字符集
1,set names charset name set names顯示客戶端傳送的sql語句中使用什麼字符集。因此,set names utf8 語句告訴伺服器將來從這個客戶端傳來的資訊採用字符集utf8 它還為伺服器傳送回客戶端的結果指定了字符集。2 連線字符集和校對 1 一些字符集和校對規則系...
mysql 修改字符集
一 修改my.ini配置檔案 mysql配置檔案 character set server utf8 設定字符集 重啟mysql資料庫服務 檢視當前資料庫字符集 show variables like character 二 修改資料庫字符集 alter database 資料庫名 characte...