0

0

修改mysql的字符集和默认存储引擎_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:41:59

|

1338人浏览过

|

来源于php中文网

原创

bitsCN.com 修改mysql的字符集和默认存储引擎 1.修改mysql的字符集mysql库现有字符集mysql> show variables like 'character%';+--------------------------+----------------------------+| Variable_name            | Value                      |+--------------------------+----------------------------+| character_set_client     | latin1                     | | character_set_connection | latin1                     | | character_set_database   | latin1                     | | character_set_filesystem | binary                     | | character_set_results    | latin1                     | | character_set_server     | latin1                     | | character_set_system     | utf8                       | | character_sets_dir       | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+8 rows in set (0.00 sec)    mysql>mysql的字符集分为几类A.客户端字符集:通过系统变量”character_set_client“表示,通知server端,客户端提交的sql语句编码格式B.连接字符集:通过系统变量”character_set_connectiont“表示,server端翻译sql语句时,使用的编码格式C.结果集字符集:通过系统变量”character_set_results“表示,server端返回结果集之前把结果集转换成的编码格式D.存储字符集:通过系统变量”character_set_results“和“character_set_server”表示,是数据在存储引擎里编码格式 为了不出现乱码,我们需要统一修改这些参数,比如我要把数据库的默认字符集改为utf8,如下所示在[client]下添加如下参数default-character-set=utf8在[mysqld]下添加如下参数default-character-set=utf8然后重启mysql服务,再查看字符集(要重新登录客户端)   mysql> show variables like 'character%';+--------------------------+----------------------------+| Variable_name            | Value                      |+--------------------------+----------------------------+| character_set_client     | utf8                       | | character_set_connection | 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/ | +--------------------------+----------------------------+8 rows in set (0.01 sec)mysql>mysql> show variables like 'collation%';+----------------------+-----------------+| Variable_name        | Value           |+----------------------+-----------------+| collation_connection | utf8_general_ci | | collation_database   | utf8_general_ci | | collation_server     | utf8_general_ci | +----------------------+-----------------+3 rows in set (0.00 sec)mysql>mysql的字符集分的比较细,可以采用默认值,也可以指定值 A.数据库字符集使用默认字符集的库mysql> create database db1;Query OK, 1 row affected (0.01 sec) mysql> show create database db1;+----------+--------------------------------------------------------------+| Database | Create Database                                              |+----------+--------------------------------------------------------------+| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+--------------------------------------------------------------+1 row in set (0.00 sec)指定字符集的库mysql> create database db2 default character set latin1;Query OK, 1 row affected (0.01 sec)mysql> show create database db2;+----------+----------------------------------------------------------------+| Database | Create Database                                                |+----------+----------------------------------------------------------------+| db2      | CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET latin1 */ | +----------+----------------------------------------------------------------+1 row in set (0.00 sec) 修改库的字符集mysql> alter database db2 default character set utf8;Query OK, 1 row affected (0.00 sec)mysql> show create database db2;+----------+--------------------------------------------------------------+| Database | Create Database                                                  |+----------+--------------------------------------------------------------+| db2      | CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+--------------------------------------------------------------+1 row in set (0.00 sec) B.表字符集mysql> use db2;Database changed 使用默认库字符集的表mysql> create table t1(a varchar(10));Query OK, 0 rows affected (0.01 sec)mysql> show create table t1;+-------+-----------------------------------------------------------------------------------------+| Table | Create Table                                                                            |+-------+-----------------------------------------------------------------------------------------+| t1    | CREATE TABLE `t1` (  `a` varchar(10) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+-----------------------------------------------------------------------------------------+1 row in set (0.00 sec) 创建指定字符集的表mysql> create table t2(a varchar(10)) default character set latin1;;Query OK, 0 rows affected (0.01 sec)ERROR: No query specifiedmysql> show create table t2;+-------+-------------------------------------------------------------------------------------------+| Table | Create Table                                                                              |+-------+-------------------------------------------------------------------------------------------+| t2    | CREATE TABLE `t2` (  `a` varchar(10) default NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+-------------------------------------------------------------------------------------------+1 row in set (0.00 sec) 更改表的字符集mysql> alter table t2 default character set utf8;Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table t2;+-------+--------------------------------------------------------------------------------------------------------------+| Table | Create Table                                                                                                    |+-------+--------------------------------------------------------------------------------------------------------------+| t2    | CREATE TABLE `t2` (  `a` varchar(10) character set latin1 default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql>从上面可以看到,修改表的字符集时,不会影响已经存在列的字符集,但新增列将继承表的字符集,如下mysql> alter table t2 add a2 varchar(10);Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table t2;+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table                                                                                                                                  |+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+| t2    | CREATE TABLE `t2` (  `a` varchar(10) character set latin1 default NULL,  `a2` varchar(10) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+-----------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.01 sec)mysql> 如果想更改已经存在表和字符列的字符集,要用如下mysql> alter table t2 convert to character set latin1;Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table t2;+-------+----------------------------------------------------------------------------------------------------------------------------+| Table | Create Table                                                                                                               |+-------+----------------------------------------------------------------------------------------------------------------------------+| t2    | CREATE TABLE `t2` (  `a` varchar(10) default NULL,  `a2` varchar(10) default NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------------------------------------------------------------+1 row in set (0.01 sec) C.字段字符集 使用默认和指定字符集创建的列mysql> create table t3 (a1 varchar(10),a2 varchar(10) character set latin1);Query OK, 0 rows affected (0.04 sec)    mysql> show create table t3;+-------+------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table                                                                                                                                   |+-------+------------------------------------------------------------------------------------------------------------------------------------------------+| t3    | CREATE TABLE `t3` (  `a1` varchar(10) default NULL,  `a2` varchar(10) character set latin1 default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql> 查看列的字符集mysql> show full columns from t3;+-------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+| Field | Type        | Collation         | Null | Key | Default | Extra | Privileges                      | Comment |+-------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+| a1    | varchar(10) | utf8_general_ci   | YES  |     | NULL    |       | select,insert,update,references |         | | a2    | varchar(10) | latin1_swedish_ci | YES  |     | NULL    |       | select,insert,update,references |         | +-------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+2 rows in set (0.01 sec) 修改列的字符集mysql> alter table t3 change a2 a2 varchar(10) character set utf8;Query OK, 0 rows affected (0.03 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show full columns from t3;+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+| Field | Type        | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+| a1    | varchar(10) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         | | a2    | varchar(10) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         | +-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+2 rows in set (0.00 sec)mysql> 结论:字符集从数据库、表、列的字符集是逐级继承的关系 查看字符集命令mysql> show create table t4; //显示表字符集mysql> show create database db2; //显示库字符集mysql> show full columns from t4; //显示列字符集alter database db2 default character set utf8; //更改库的字符集alter table t2 convert to character set latin1;//更改表的现存列字符集alter table t2 default character set utf8;  //更能改表的默认字符集alter table t3 change a2 a2 varchar(10) character set utf8; //更能改字段的字符集     2.修改mysql的默认存储引擎mysql> show variables like 'storage%';+----------------+--------+| Variable_name  | Value  |+----------------+--------+| storage_engine | MyISAM | +----------------+--------+1 row in set (0.01 sec)mysql> 在[mysqld]下添加如下参数default-storage-engine=innodb 重启mysql服务,查看mysql> show variables like 'storage%';+----------------+--------+| Variable_name  | Value  |+----------------+--------+| storage_engine | InnoDB | +----------------+--------+1 row in set (0.01 sec)mysql> 创建默认字符集的表mysql> create table t4 (a1 int);Query OK, 0 rows affected (0.01 sec)mysql> show create table t4;+-------+--------------------------------------------------------------------------------------+| Table | Create Table                                                                         |+-------+--------------------------------------------------------------------------------------+| t4    | CREATE TABLE `t4` (  `a1` int(11) default NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------+1 row in set (0.00 sec) 更改表的默认字符集mysql> alter table t4 engine myisam;Query OK, 0 rows affected (0.06 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table t4;+-------+--------------------------------------------------------------------------------------+    | Table | Create Table                                                                         |+-------+--------------------------------------------------------------------------------------+| t4    | CREATE TABLE `t4` (  `a1` int(11) default NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8 | +-------+--------------------------------------------------------------------------------------+1 row in set (0.00 sec)mysql>   作者 wyzxg bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.6万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 850人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号