手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

MySQL修改字符集

2025-01-02 16:02:02 3604

MySQL修改字符集

歡迎來到藍隊云技術小課堂,每天分享一個技術小知識。

1.1. 查看默認字符集

show variables like 'character%';

# 或者

show variables like '%char%';

MySQL5.7中執行如下:

image-20250102142811989image.png

MySQL 5.7 默認的客戶端和服務器都用了 latin1 ,不支持中文,保存中文會報錯。示例如下:

ysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)

mysql> create database dbdemo1;
Query OK, 1 row affected (0.00 sec)

mysql> use dbdemo1;
Database changed
mysql> create table t_emp(id int,name varchar(15));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t_emp(id,name) values(1001,'ZhangSan');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t_emp(id,name) values(1002,'李四');
ERROR 1366 (HY000): Incorrect string value: '\\\\\\\\\\\\\\\\xE6\\\\\\\\\\\\\\\\x9D\\\\\\\\\\\\\\\\x8E\\\\\\\\\\\\\\\\xE5\\\\\\\\\\\\\\\\x9B\\\\\\\\\\\\\\\\x9B' for column 'name' at row 1

因為默認情況下,創建表使用的是 latin1

mysql> show create table t_emp;
+-------+----------------------------------------------------------------------------------+
| Table | Create Table                                                                     |
+-------+----------------------------------------------------------------------------------+
| t_emp | CREATE TABLE `t_emp` (
 `id` int(11) DEFAULT NULL,
 `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

1.2. 修改字符集

1、編輯配置文件,在mysqld模塊下添加如下內容

# vim /etc/my.cnf
[mysqld]
...
character_set_server=utf8
collation-server=utf8_general_ci

2、重啟數據庫

# systemctl restart mysqld

注意:已存在的原庫、原表的設定不會發生變化,參數修改只是對新建的數據庫生效。

3、修改已有庫&表字符集的變更

-- 修改已創建數據庫的字符集
alter database dbtest1 character set 'utf8';

-- 修改已創建數據表的字符集
alter table t_emp convert to character set 'utf8';

范例:

# 修改已經創建數據庫的字符集

-- 修改之前查看字符集
mysql> show create database dbdemo1;
+----------+--------------------------------------------------------------------+
| Database | Create Database                                                    |
+----------+--------------------------------------------------------------------+
| dbdemo1  | CREATE DATABASE `dbdemo1` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.01 sec)

-- 進行修改
mysql> alter database dbdemo1 character set 'utf8';
Query OK, 1 row affected (0.00 sec)

-- 修改之后查看字符集
mysql> show create database dbdemo1;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| dbdemo1  | CREATE DATABASE `dbdemo1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)

# 修改已經創建數據表的字符集

-- 修改之前查看字符集
mysql> show create table t_emp;
+-------+------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                 |
+-------+------------------------------------------------------------------------------------------------------------------------------+
| t_emp | CREATE TABLE `t_emp` (
 `id` int(11) DEFAULT NULL,
 `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

-- 進行修改
mysql> alter table t_emp convert to character set 'utf8';
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

-- 修改之后查看字符集
mysql> show create table t_emp;
+-------+----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                               |
+-------+----------------------------------------------------------------------------------------------------------------------------+
| t_emp | CREATE TABLE `t_emp` (
 `id` int(11) DEFAULT NULL,
 `name` varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

注意:原有的數據如果是用非'utf8'編碼的話,數據本身編碼不會發生改變。已有數據需要導出或刪除,然后重新插入。

藍隊云官網上擁有完善的技術支持庫可供參考,大家可自行查閱,更多技術問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。

更多技術知識,藍隊云期待與你一起探索。




提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: