在官網(wǎng)安裝完mysql 后, 用go語言操作數(shù)據(jù)庫后發(fā)現(xiàn)無法插入中文,折騰了一番后,可以插入,但顯示亂碼(??),再折騰一番后,終于解決問題,方法如下;
先進(jìn)入mysql操作臺(tái), 用 status命令查看下
mysql> status;
檢查哪個(gè)字符集不符合編碼要求就修改哪個(gè)
例如:
MYSQL>set character_set_client = "utf8" ;
MYSQL>set character_set_connection = "utf8" ;
MYSQL>set character_set_results= "utf8" ;
MYSQL>set character_set_server= "utf8" ;
重新啟動(dòng)mysql,再查看status;
我在使用navicat作為數(shù)據(jù)庫可視化操作時(shí),發(fā)現(xiàn)連接方式要選"自動(dòng)",表的內(nèi)容才能顯示正確
如果上述方法無效, 可以新建一個(gè) my.cnf文件,編輯內(nèi)容如下:
[client]
default-character-set = utf8
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
注意: collation-server = utf8_general_ci 也可以設(shè)置為 utf8_bin(對(duì)字段,查詢內(nèi)容大小寫敏感)
路徑保存在 /etc/mysql/my.cnf
重啟mysql
為了嚴(yán)謹(jǐn),在建立數(shù)據(jù)庫和字段時(shí),最好指定編碼
如:
create database 數(shù)據(jù)庫名 default character set utf8 collate utf8_general_ci;
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`uid` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`departname` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
`created` date DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;