導航:首頁 > 操作系統 > linuxmysql字元集設置

linuxmysql字元集設置

發布時間:2022-07-03 00:17:15

A. 如何mysql 5.7的編碼設置成utf8mb4

整理 MySQL 8.0 文檔時發現一個變更:
默認字元集由 latin1 變為 utf8mb4。想起以前整理過字元集轉換文檔,升級到 MySQL 8.0 後大概率會有字元集轉換的需求,在此正好分享一下。
當時的需求背景是:
部分系統使用的字元集是 utf8,但 utf8 最多隻能存 3 位元組長度的字元,不能存放 4 位元組的生僻字或者表情符號,因此打算遷移到 utf8mb4。
遷移方案一1. 准備新的資料庫實例,修改以下參數:[mysqld]## Character Settingsinit_connect='SET NAMES utf8mb4'#連接建立時執行設置的語句,對super許可權用戶無效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#設置服務端校驗規則,如果字元串需要區分大小寫,設置為utf8mb4_binskip-character-set-client-handshake#忽略應用連接自己設置的字元編碼,保持與全局設置一致## Innodb Settingsinnodb_file_format = Barracudainnodb_file_format_max = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON#允許索引的最大位元組數為3072(不開啟則最大為767位元組,對於類似varchar(255)欄位的索引會有問題,因為255*4大於767)

2. 停止應用,觀察,確認不再有數據寫入
可通過 show master status 觀察 GTID 或者 binlog position,沒有變化則沒有寫入。
3. 導出數據
先導出表結構:mysqlmp -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb > /backup/testdb.sql
後導出數據:mysqlmp -u -p --no-create-info --master-data=2 --flush-logs --routines --events --triggers --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --database testdb > /backup/testdata.sql

4. 修改建表語句
修改導出的表結構文件,將表、列定義中的 utf8 改為 utf8mb4
5. 導入數據
先導入表結構:mysql -u -p testdb < /backup/testdb.sql
後導入數據:mysql -u -p testdb < /backup/testdata.sql

6. 建用戶
查出舊環境的資料庫用戶,在新資料庫中創建
7. 修改新資料庫埠,啟動應用進行測試
關閉舊資料庫,修改新資料庫埠重啟,啟動應用

B. linux系統下MYSQL資料庫中文數據亂碼問題

根據你的問題,資料庫不在自己手邊。
那首先要調查清楚,數據表的編碼,看清,不是資料庫,是表,表的字元集編碼。
然後往前順。
然後再java程序中轉碼,保證寫到sql中的數據是以該數據表所用的字元集編碼的就好了。

亂碼出現在不同部分的通信之間
一個系統中,通常是在顯式輸入中文的地方發生轉碼錯誤。
比如,servlet處理從瀏覽器傳來的數據的時候,
從資源文件讀取數據的時候。
在程序中顯式地硬編碼字元串中文字面值的時候。
從別人的資料庫讀取數據的時候。

這些地方經常會跟之後的系統編碼不一致,所以在這些地方使用字元串數據的時候,就要轉碼。
資源文件,可以用文本工具保存成需要的編碼。
對於request中的數據,可以在正式處理之前加
過濾器。
對於別的資料庫,可以設一個專門的過濾類來轉碼。

C. Linux下程序往mysql資料庫裡面寫中文亂碼,資料庫字元集都設置為UTF8了,怎麼解決

根據自己的語言,在代碼最前面加一句
PHP:
header( 'Content-Type:text/html;charset=utf8 ');
ASP:
Response.Charset( "utf8")
JSP:
response.setHeader( "Charset ", "utf8");

在資料庫存查詢前加一句mysql_query('set names utf8')

D. linux伺服器上的mysql字元集里沒有GBK編碼

如果你是編譯安裝的話,你最好加上--with-charset=gbk
--with-extra-charsets=all
另外,如果你上面編譯的時候使用了--with-charset=gbk
,那麼你創建的資料庫默認就是gbk字元集,否則,需要你在創建資料庫時指定資料庫的字元集,
如:create
database
dbname
default
character
set
gbk;

E. 如何在linux下安裝mysql資料庫並配置

具體方法如下:

1、安裝MySQL資料庫

先從MySQL官網下載MySQL,然後進入所下載的安裝文件所在目錄,運行如下命令進行安裝,然後使用/etc/rc.d
/init.d/mysqlrestart命令重啟MySQL服務:

F. linux下怎麼修改mysql的字元集編碼

可直接進入
mysql
進行更改,具體如下:
1.查找/etc目錄下是否有my.cnf文件;
#ls
-l
|
grep
my.cnf
(在/etc下查找是否有my.cnf文件存在)
2.如果沒有就要從/usr/share/mysql,拷貝一個到/etc
下,在/usr/share/mysql目錄下有五個後綴為.cnf的文件,分別是
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
;從中隨便拷貝一個到/etc目錄下並將其改為my.cnf文件,我選擇的是my-medium.cnf

#cp
/usr/share/mysql/my-medium.cnf
/etc/my.cnf
3.修改my.cnf文件,在該文件中的三個地方加上
default-character-set=utf8([client]
[mysqld]
[mysql])
#vi
/etc/my.cnf
修改如下:(紅色為添加部分)
[client]
#password
=
your_password
port
=
3306
socket
=
/var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port
=
3306
socket
=
/var/lib/mysql/mysql.sock
skip-locking
key_buffer
=
16M
max_allowed_packet
=
1M
table_cache
=
64
sort_buffer_size
=
512K
net_buffer_length
=
8K
read_buffer_size
=
256K
read_rnd_buffer_size
=
512K
myisam_sort_buffer_size
=
8M
default-character-set=utf8
init_connect='SET
NAMES
utf8'
//此行可不加
[mysql]
no-auto-rehash
default-character-set=utf8
保存退出;
4.重起MySQL伺服器,使其設置的內容生效
#/etc/init.d/mysql
restart
5.
重新登入mysql;
#
mysql
-u
root
-
p
#(輸入密碼)
mysql>
show
variables
like
'character_set%'
;
+--------------------------+----------------------------+
|
Variable_name
|
Value
|
+--------------------------+----------------------------+
|
character_set_client
|
utf8
|
|
character_set_connection
|
utf8
|(都生成了utf8,成功了
哈哈哈)
|
character_set_database
|
utf8
|
|
character_set_filesystem
|
binary
|
|
character_set_results
|
utf8
|
|
character_set_server
|
utf8
|
|
character_set_system
|
utf8
|
|
character_sets_dir
|
/usr/share/mysql/charsets/
|
+--------------------------+----------------------------+
mysql啟動和停止
操作

可以通過
#/etc/init.d/mysql
[start
|
stop
|
restart](實現啟動,停止,重啟)
也可以通過
#service
mysql
[start
|
stop
|
restart](實現啟動,停止,重啟)
*********************************
另外:如果在修改字元集前,嘗試在資料庫中插入中文,那麼當修改了字元集後,在你所插入中文的資料庫中(在別的資料庫中可能沒問題),
通過show
variables
like
'character_set%'查詢的結果可如下:
+--------------------------+----------------------------+
|
Variable_name
|
Value
|
+--------------------------+----------------------------+
|
character_set_client
|
utf8
|
|
character_set_connection
|
utf8
|
|
character_set_database
|
latin1
|
|
character_set_filesystem
|
binary
|
|
character_set_results
|
utf8
|
|
character_set_server
|
utf8
|
|
character_set_system
|
utf8
|
|
character_sets_dir
|
/usr/share/mysql/charsets/
|
+--------------------------+----------------------------+

G. 如何修改mysql庫所有 表的字元集

修改mysql的默認字元集是通過修改它的配置文件來實現的。一般分兩種情況:
windows平台
windows下的mysql配置文件是my.ini,一般在c:windowsmy.ini或者c:winntmy.ini可以直接在這個文件裡面加上
default-character-set=gbk
#或gb2312,big5,utf8
然後重新啟動mysql
service
mysql
restart

/etc/init.d/mysql
restart
或用其他方法重新啟動,就生效了。
unix平台
linux下的mysql配置文件是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:
find
/
-iname
my.cnf
在這個文件裡面加上
default-character-set=gbk
#或gb2312,big5,utf8
然後重新啟動mysql
net
stop
mysql
net
start
mysql
就生效了。

H. linux mysql 創建資料庫 並且指定編碼

GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

注意:如果不是通過my.ini配置文件設置的內容,只在當前狀態下有效,當重啟資料庫服務後失效。所以如果想要不出現亂碼只有修改my.ini文件,資料庫編碼可以在創建資料庫時候指定UTF8,如下:
|character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8

注意該配置| character_set_server | latin1 無法設置成UTF8
交互時候仍然會出現亂碼。

只有當修改my.ini中設置UTF8,才會全部修改成UTF8

-------------------------
mysql設置編碼命令

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;/*這里要注意很有用*/
SET character_set_server = utf8;

SET collation_connection = utf8_bin;
SET collation_database = utf8_bin;
SET collation_server = utf8_bin;

my.ini中配置默認編碼
default-character-set=utf8

連接資料庫設置編碼
jdbc:mysql://192.168.0.5:3306/test?characterEncoding=utf8

/*****************************************java與mysq編碼對應****************************************/
java中的常用編碼UTF-8;GBK;GB2312;ISO-8859-1;
對應mysql資料庫中的編碼utf8;gbk;gb2312;latin1

---------------------------
資料庫連接串中指定字元集URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk

I. linux下修改mysql字元集為utf8

看了別人的回答,肯定不對,utf8 肯定是受支持的
只需要在client和mysqld下面設就可以了
default-character-set = utf8

把等號兩面都加空格試試

J. linux下rpm安裝mysql,如何修改默認字元集為utf8

如果/etc/目錄下沒有my.cnf配置文件,請到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個到/etc/並改名為my.cnf中;
不存在啟動不了的情況啊,如有啟動不了,仔細查看你的my.cnf文件,是不是哪裡配置需要修改,然後查看一下mysql啟動腳本/etc/rc.d/init.d/mysql。最重要的結合你mysql的錯誤日誌去分析。

設置默認utf-8
在文件my.cnf中加上如下配置:
[mysqld]
init_connect = 'SET NAMESutf8'
character-set-server = utf8
collation-server =utf8_general_ci

針對第三點:

在創建資料庫完成後,最好查看下你資料庫的字元集是什麼?用show create database test;命令可以看到。必須保證你資料庫的編碼格式是utf-8的,這樣才可以保證插入到資料庫中的是中文格式的

閱讀全文

與linuxmysql字元集設置相關的資料

熱點內容
程序員理發店生意怎麼樣 瀏覽:601
程序員羅技 瀏覽:180
軟考初級程序員課程2021下載 瀏覽:487
杭州程序員奶奶 瀏覽:878
不聽命令造成錯誤 瀏覽:979
kool系統源碼 瀏覽:608
流氓app在哪裡看 瀏覽:98
域名購買了怎麼指向伺服器 瀏覽:121
安卓手機如何讓照片顏色反轉 瀏覽:859
怎麼下載卓睿安手機版 瀏覽:514
h3crange命令 瀏覽:468
php前景和python 瀏覽:338
php壓縮圖片內存大小 瀏覽:495
在哪裡可以查看雲伺服器的信息 瀏覽:70
python讀取非txt文件 瀏覽:799
艾莫迅用什麼編程軟體好 瀏覽:227
android文件存儲讀取 瀏覽:214
php基礎教程第5版 瀏覽:543
伺服器裡面怎麼刷東西 瀏覽:194
榮耀手機如何快速把app切換頁面 瀏覽:798