MySQL字符集

ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latinlmysql

source test.sqllinux

root# mysql -uroot -p'' oldboy < test.sqlsql

default -charact-set=latinl數據庫

 

不亂碼的思想:Linux,客戶端,服務器,庫,表,程序!
一、linux系統
root# cat /etc/sysconfig/i18n
#LANG="zh_CN.GB2312"服務器

二、MySQL客戶端
臨時:
set 列名 latinl;
法1
#mysql -uroot -p
set names utf8
法2
#mysql -uroot -p --default-character-set=utf8


永久:
更改my.cnf客戶端模塊參數,實現set names utf8的效果,而且永久生效。
[client]
default-character-set=latinl
提示,無需重啓服務,退出從新登錄,至關於 set names latinl
/etc/init.d/mysqld startui

三、MySQL服務端
[mysqld]
default -character-set=utf8 5.1版本以及以前版本
character -set -server=usf8 5.5版本編碼

四、MySQL庫表
create database oldboy_utf8 DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;orm

CREATE TABLE 'student'(
'id' int (4) NOT NULL AUTO_INCREMENT,
'name' char(20) NOT NULL,
PRIMARY KEY ('id')
)ENGINE=InnoDB AUTO_INCERMENT=10 DAFAULT CHARSET=utf8server

五、內存


程序
簡體 UTF8


總結:
mysqldump.mysqlbinlog.mysql.mysqladmin

 

 

 

 


六、查看錶結構
desc 表名;
show columns from 表名;
describe 表名;
show create table 表名;

use information_schema
select * from columns where table_name='表名';
查看錶結構:
mysql> status;
mysql> select version();
mysql --help | grep Distrib
$ rpm -qa|grep mysql


查看錶狀態:
show create table Course\G

查看字符集:
mysql -uroot -p'abc123,.' -e "SHOW CHARACTER SET;"

mysql -uroot -p'abc123,.' -e "SHOW CHARACTER SET;"|egrep "gbk|utf8|latin1"awk'{print $0}'

 



{
永久修改字符集:
另外一種狀況,能夠永久生效字符集,方法以下:
對於中文亂碼問題,須要設置mysql字符集:
用find命令查找cnf文件。記得不要去找my.cnf由於它不必定存在,而應該找*.cnf。
# find / -name '*.cnf'
/usr/share/doc/MySQL-server-5.5.27/my-huge.cnf
/usr/share/doc/MySQL-server-5.5.27/my-large.cnf
/usr/share/doc/MySQL-server-5.5.27/my-medium.cnf
/usr/share/doc/MySQL-server-5.5.27/my-small.cnf
/usr/share/doc/MySQL-server-5.5.27/my-innodb-heavy-4G.cnf
/usr/share/doc/kpathsea-2007/kpathsea_defaults/texmf-kpathsea-defaults.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/etc/pki/tls/openssl.cnf

找到以後,複製一個出來
# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
打開my.cnf修改編碼
# vi /etc/my.cnf

mysql 5.5如下:
在[mysqld]下添加
default-character-set=utf8
在[client]下添加
default-character-set=utf8


mysql 5.5 改成:
[client]
character-set-server = utf8
[mysqld]
character-set-server = utf8
}


登錄時修改字符集:
mysql -uroot -p'abc123,.' --default-character-set=latin1

 

檢查:
sed -n '18,19p' /etc/my.cnf
[client]
#default-character-set=utf8
#password = your_password

爲何服務器要重啓才能生效:
由於linux要把配置加載到內存才行






指定字符集建庫:
create database names DEFALUT CHARACTER SET UTF8 COLLATE utf8_general_ci;
指定字符集建表:
CREATE TABLE 'student'(
'id' int (4) NOT NULL AUTO_INCREMENT,
'name' char(20) NOT NULL,
PRIMARY KEY ('id')
)ENGINE=InnoDB AUTO_INCERMENT=10 DAFAULT CHARSET=utf8


字符集要一致:


/etv/my.cnf
[mysqld]服務端
[client]客戶端
Linux
/etc/sysconfig/i18n
開發程序

 

如何更改生產MySQL數據庫庫表字符集 對於已有的數據庫想修改字符集不能經過"alter adtabase character set*"或"alter table tablename character set*" 這兩個命令都不能更新已有記錄的字符集,只能更新新建立的表或者記錄 已經有記錄的字符集的調整,必須先將數據導出,通過修改字符集後從新導入後才能完成修改。 一、導出表結構 mysqldump -uroot -p --default-character-set=latinl -d dbname>alltable.sql --default-character-set=gbk 表示字符集進行鏈接 -d只導表結構 二、編輯alltable.sql將latin1改爲GBK 三、確保數據庫再也不更新,導出因此數據 mysqldump -uroot -p --quick --no-create-info --extend-insert --default-character-set=latin1 dbname >alldata.sql 參數說明: --quick:用於轉儲大的表,強制mysqldump從服務器一次一行的檢索數據而不是檢索全部行,並輸出前CACHE到內存中 --no-create-info:不建立 CREATE TABLE語句 --extend-insert:使用包括幾個VALUES列表的多行INSERT語法,這樣文件更小,IO也小,導入數據時會很是快。 --default-character-set=latin1:#按照原有的字符集導出數據,這樣導出的文件中,全部中文都是可見的,不會保存成亂碼。 四、打開alldata.sql將set names latin1 修改爲set names gbk; 五、建庫 create database daname default charset gbk; 六、建立表,執行allable.sql mysql -uroot -p dbaneme <alltable.sql 七、導入數據: mysql -uroot -p dbaneme <alldata.sql 注意: 選擇目標字符集時,要注意最好大於等於源字符集(字庫更大),不然 可能會丟失不被支持的數據。 總結: 一、導出表結構及建庫建表語句,sed批量更改 二、導出因此數據 三、修改mysql服務端和客戶端編碼 四、刪除原有的庫表及數據 五、導入新的建庫及建表語句 六、導入mysql的全部數據inser into Course (Cno,Cname,Tno)values(1,計算機,1);

相關文章
相關標籤/搜索