MySQL字元集

來源:互聯網
上載者:User

標籤:extend   方法   not   stat   應該   admin   ini   select   修改編碼   

ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latinl

source test.sql

root# mysql -uroot -p‘‘ oldboy < test.sql

default -charact-set=latinl

 

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

2、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 start

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

4、MySQL庫表
create database oldboy_utf8 DEFAULT 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

5、


程式
簡體 UTF8


總結:
mysqldump.mysqlbinlog.mysql.mysqladmin

 

 

 

 


6、查看錶結構
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*"
這兩個命令都不能更新已有記錄的字元集,只能更新新建立的表或者記錄
已經有記錄的字元集的調整,必須先將資料匯出,經過修改字元集後重新匯入後才能完成修改。


1、匯出表結構
mysqldump -uroot -p --default-character-set=latinl -d dbname>alltable.sql
--default-character-set=gbk 表示字元集進行串連 -d只導表結構
2、編輯alltable.sql將latin1改成GBK

3、確保資料庫不再更新,匯出所以資料
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:#按照原有的字元集匯出資料,這樣匯出的檔案中,所有中文都是可見的,不會儲存成亂碼。
4、開啟alldata.sql將set names latin1 修改成set names gbk;
5、建庫
create database daname default charset gbk;
6、建立表,執行allable.sql
mysql -uroot -p dbaneme <alltable.sql
7、匯入資料:
mysql -uroot -p dbaneme <alldata.sql

注意:
選擇目標字元集時,要注意最好大於等於源字元集(字型檔更大),否則 可能會丟失不被支援的資料。


總結:
1、匯出表結構及建庫建表語句,sed批量更改
2、匯出所以資料
3、修改mysql服務端和用戶端編碼
4、刪除原有的庫表及資料
5、匯入新的建庫及建表語句
6、匯入mysql的所有資料
inser into Course (Cno,Cname,Tno)values(1,電腦,1);

MySQL字元集

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.