首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

再见乱码:5 分钟读懂 MySQL 字符集设置

作者: 程序猿小卡_casper 原文:https://segmentfault.com/a/1190000012775484 一、内容概述 MySQL使用过程,了解字符集、字符序概念,以及不同设置对数据存储...不少同学日常工作遇到“乱码”问题,很有可能就是因为对字符集与字符序理解不到位、设置错误造成。...比如字符序 utf8_general_ci,标明它是字符集 utf8字符序。 更多规则可以参考 官方文档。...如何指定:MySQL服务启动时,可通过命令行参数指定。也可以通过配置文件变量指定。 server默认字符集、字符序:MySQL编译时候,通过编译参数指定。...默认值,可以MySQL编译时,通过编译选项指定: cmake .

5.2K110
您找到你想要的搜索结果了吗?
是的
没有找到

1-MYSQL基础理论知识总结

(2)InnoDB引擎介绍 InnoDB 引擎是MySQL数据库另一个重要存储引擎,是新版本默认数据库引擎,被包含在所有二进制安装包里; 存储引擎比如InnoDB,也支持不使用文件系统直接管理裸设备...-e 's/MyISAM/InnoDB/g' old2boy.sql > oldboy.sql & #3)mysql_convert_table_format 命令修改 安装mysql目录之中...Mixed 模式: 实际上是前两种模式结合,Mixed模型下MySQL会根据执行每一条具体sql语句来区别对待日志形式,也就是statement和Row之间选择一种;Statement level...(MySQL 8.0 默认是utf8mb4,而MySQL 5.7 默认utf8,而5.6以下是latins) 0)mysq服务搭建编译时或者创建数据库时候指定字符集 #/** 数据库要支持创建字符集...客户端 > 设置UTF8 - set names utf8 (建议中英文选择utf8) 服务端 > my.cnfmysqld更改|响应字符集 WeiyiGeek.终端工具字符集

35030

回龙观大叔狂磕mysql(第一回)

比如: 1. mysql B+树是什么结构2. mysql 事务是怎么是实现3. 你先回去等通知吧 最后我心都凉了, 质问了面试官几句, 问这些对工作有啥用? 有真正考察到我实力?...Unix域套接字文件, 但是我们一般都使用是 TCP/IP 模式, 因为后面两个只能客户端与服务端同一机器上, 但是作为核心基础数据库, 我们一般都分开部署....指定默认端口 3306, 端口可以启动 mysql 时候使用 -P 指定, max_connections 指定同时最大连接数 mysql是怎么接收请求并处理 未来面试官肯定点了点头, 再问我:...存储引擎是我们存储数据方式不同而使用不同引擎, 一般我们默认使用 innodb 引擎 创建表可以指定, 也可以使用 default-storage-engine 指定默认引擎 关于 mysql 字符集...MySQLutf8是utf8mb3别名,utf8就意味着使用1~3个字节来表示一个字符,如果使用4字节编码一个字符情况,比如存储一些emoji表情啥,那请使用utf8mb4, 英文、数字等只使用一个字符即可表示

41550

应用示例荟萃 | 全方位认识 information_schema

,以及对应字符集和字段数据类型等信息,那么上面的查询结果代表什么意思呢?...默认值为SYSTEM,代表使用system_time_zone系统变量设置时区 EVENT_BODY:用于事件DO子句中语句语言类型,MySQL 5.7,总是"SQL"。...SQL_MODE:创建或更改事件时MySQL ServerSQL模式 STARTS:对于其定义包含STARTS子句重复事件,此列包含相应DATETIME值。...索引名称可以创建时指定,如果不指定InnoDB将隐含地创建名称与列名一致索引,但索引名称整个实例不一定是唯一(但在每个表需要唯一)。...对于多字节字符集列字节长度,此长度值是为定义长度所需最大字节,如VARCHAR(N),如果字符集为laitin1,则该字段字节长度为N,如果字符集为gbk,则字段长度为2N,如果字符集utf8

56720

从零开始学Mysql - 字符集和编码(下)

,这里我们先来回顾一下上一篇讲了什么内容: Mysql数据,字符串大小比较本质上是通过下面两种方式进行比较,简而言之字符串大小比较是依赖字符集和比较规则来进行比较。...字符集基础上进行扩展,共256个字符,字符集叫做latin1,也是Mysql5.7之前默认字符集Mysql8.0之后默认字符集为utf8mb4) GB2312:首先需要注意是不仅仅只有“汉字”哦...数据库级别:如果没有指定数据库级别比较规则或者字符集,则默认使用服务器。 表级别:表级别在默认情况下使用数据库级别的字符集和比较规则。..., TABLE_NAME,TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME = '数据表名称' 未设置情况下默认参考数据库级别设置...= 字符集名; SET character_set_results = 字符集名; 比较有意思是,这里设置字符集时候mysql给了提示,那就是如果直接使用utf8进行设置,官方还会进行提示。

79720

Centos7.4下部署PowerDNS操作记录

之前已经介绍了DNS环境部署过程,这里说下PowerDNS使用及部署,PowerDNS 是一个跨平台开源DNS服务组件,它是高性能域名服务器,除了支持普通BIND配置文件,PowerDNS还可以从...-> 接着配置文件/etc/my.cnf.d/client.cnf,[client]添加 default-character-set=utf8 -> 然后配置文件/etc/my.cnf.d.../mysql-clients.cnf,[mysql]添加 default-character-set=utf8 最后是重启MariaDB,并登陆MariaDB查看字符集 [root@PowerDNS...~]# systemctl restart mariadb.service 再次登录MariaDB,查看字符集,发现已是utf8了 [root@PowerDNS ~]# mysql -p123456...这里我写是部署机主机名 主域名服务器:该值创建新DNS区域时会被用于作为主域名服务器。 辅域名服务器:该值创建新DNS区域时会被用于作为辅域名服务器。

7.3K122

mysql数据库巡检

本文首发于个人公众号 Java 技术大杂烩,欢迎关注 前言 系统运行过程,DBA需要经常对数据库进行一些检查,如数据库磁盘占用量,缓存命中率,内存分配等;由于有个客户需要对系统数据库进行检查...shell 脚本连接数据库执行mysql 命令 shell 脚本,去链接数据库,并执行相关命令步骤如下: 首先使用 touch 命令创建个文件, 使用 chmod 赋给这个文件执行权限 文件输入如下...查看MySQL执行次数最多前 10 条SQL MySQL,要统计执行次数最大SQL ,需要开启慢查询,通过慢查询日志进行统计, 查看是否开启慢查询日志命令: show variables like...Cache SQL Qcache_queries_in_cache:目前 Query Cache SQL 数量 Qcache_total_blocks:Query Cache Block...查询等待事件TOP 10 查询等待事件相关需要通过 performance_schema 来进行统计,MySQL performance schema 主要用于监控MySQL server一个较低级别的运行过程资源消耗

2K40

2020-01-26:mysql8.0做了什么改进?

MySQL8.0,使用临时表存储引擎作为临时表(为优化JOIN、UNION等操作而创建)存储默认引擎,从而替换掉了原有的内存存储引擎。...4.UNDO空间回收 MySQL5.7,我们已经可以截断UNDO空间了(设置innodb_undo_log_truncate,默认情况下禁用)。...MySQL8,我们改进了磁盘格式来使得每个UNDO表有大量UNDO段。 此外,现在默认为两个单独UNDO表空间(而非InnoDB系统表空间(最小为2,大小动态变化))创建UNDO段。...5.UTF8性能改进 UTF8性能 由于默认字符集已经从latin1改为utf8mb4,因此现在UTF8速度要快得多,特定查询时速度提高了1800%!...10.加密表空间中REDO日志和UNDO日志都将被加密 MySQL 5.7,可以为存储每个表表加密InnoDB表空间。

88410

mysql常用配置注意项与sql优化

建立数据库: 建立数据库时编码字符集采用utf8 排序规则: 后缀"_cs"或者"_ci"意思是区分大小写和不区分大小写(Case Sensitive & Case Insensitve) 后缀"..._bin" 规定每个字符串用二进制编码存储,区分大小写,可以直接存储二进制内容 utf-8有默认排序规则: 命令:SHOW CHARSET LIKE 'utf8%'; 注意点:什么时候需要区分大小写需要在设计和使用时注意...,和业务真实基本一致数据后,通过执行 SELECT * FROM yourTableName PROCEDURE ANALYSE();   根据建议修改表字段定义 注意:此处建议知识针对表数据,...#主表数据和索引数据最大内存缓冲区,分配过大,会使Swap占用过多,致使Mysql查询特慢 SELECT @@innodb_buffer_pool_size; 开启慢查询 mysqldumpslow...-g 可以跟上正则匹配模式,大小写不敏感。

79740

Server层统计信息字典表 | 全方位认识 information_schema

:显示列信息对应表所在库名 TABLE_NAME:显示列信息所在表名 COLUMN_NAME:显示列名称 ORDINAL_POSITION:显示列创建顺序 COLUMN_DEFAULT:显示列默认值...所以,使用CREATE TABLE,ALTER TABLE和CREATE INDEX语句创建前缀索引时,你需要考虑字符集因素。...FILES 该表提供查询MySQL数据表空间文件相关信息,包含InnoDB存储引擎和NDB存储引擎相关数据文件信息,由于NDB存储引擎国内较少使用,我们大多数场景(95%以上场景InnoDB存储引擎都可以使用...该表数据是根据缓存在内存已打开数据文件来记录,与查询INFORMATION_SCHEMA.INNODB_SYS_DATAFILES表内部数据字典信息不同,INFORMATION_SCHEMA.INNODB_SYS_DATAFILES...:数据库名称 DEFAULT_CHARACTER_SET_NAME:数据库默认字符集名称 DEFAULT_COLLATION_NAME:数据库默认校对规则名称 SQL_PATH:总是为NULL PS

1.2K20

从零开始学Mysql - 字符集和编码(下)

Mysql数据,字符串大小比较本质上是通过下面两种方式进行比较,简而言之字符串大小比较是依赖「字符集和比较规则」来进行比较。...,windows操作系统字符集也叫做代码页,也就意味着一个字符集对应一个唯一字符集,比如常用936代表了GBK,65001代表了UTF-8,最后我们可以windows窗口chcp进行查看,由于...❝提示:Mysql5.7(包含)以及之前版本中使用latin1作为默认字符集Mysql8.0之后默认字符集为utf8mb4。...个人事迹操作时候发生了一个比较有意思事,设置字符集时候mysql给了提示说后续会在设置utf8字符集时候默认字符集改为;「utf8mb4」。...这里也有一个硬性规定:「默认Mysql列所指定字符集规则为主」,这也意味着如果以utf8进行比较,会先进行一次转化把gbk转为utf8之后进行比较,当然一般也没人闲着没事某个列字符集,这里仅仅作为一个小知识即可

2.2K20

最近遇到一个库&表字符集大坑

我们生产环境建表语句,之前一直要求研发提交时候不要带上字符集和排序集,这样就可以follow数据库默认配置。但是最近发现掉坑里了。 至于是什么坑,为什么掉坑。...mysql5.7升级到8.0之前,业务侧提交建库建表语句 CREATE DATABASE db1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;...; -- 看下字符集情况 [db2]> select `TABLE_SCHEMA`, `TABLE_NAME`, `TABLE_COLLATION`, `CREATE_TIME` from information_schema...,我们用mysql5.7,建库默认字符集utf8 字符排序集utf8_general_ci。...但是, 如果我们数据库里面创建新表时候,如果不显式指定的话,会follow所在数据库字符集和字符排序集(也就是 虽然升级到8.x了,但是创建表还是用utf8 和utf8_general_ci

50420

windows mysql安装及常用命令

-winx64 path里添加:%MYSQL_HOME%\bin 注:如果需要修改一些配置的话,解压目录下新建配置文件:my.ini my.ini配置 我位置:D:\Program Files\mysql...-5.7.30-winx64 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置33060端口 port = 33060...# 设置mysql安装目录 basedir=D:\Program Files\mysql-5.7.30-winx64 # 设置mysql数据库数据存放目录 datadir=D:\Program Files...\mysql-5.7.30-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用字符集默认为8比特编码latin1字符集 character-set-server...=utf8 # 创建新表时将使用默认存储引擎 default-storage-engine=INNODB 初始化数据库 以管理员身份运行cmd 进入D:\Program Files\mysql

45951

MySQL入门操作和常规DML、DDL、DQL使用

MySQL刷新权限,将某些权限从硬盘刷新到内存(修改root密码自带隐式刷新权限操作) mysql> flush privileges; Query OK, 0 rows affected (0.00...> 查看数据库字符集 mysql> show variables like '%char%'; +--------------------------+-------------------------...> data目录每个数据库都创建了一个文件夹,lbdata1、ib_logfile0、ib_logfile1三个是专门为innodb存放数据和日志共享文件 mysql> create database...local/mysql/data/test]$ ls db.opt tmp.frm tmp.ibd 每个数据库目录db.opt是数据库信息,表名.frm是表元信息,表名.ibd是数据信息,其中...innodb_file_per_table参数来控制是否单独存储,5.7默认on,之前版本默认off mysql> show variables like '%per_table%'; +-------

38810

我们为何对MySQL 8.0到来感到兴奋!

取消默认MyISAM系统表 由于采用了新本地数据字典,现在我们不在需要MyISAM系统表了! 这些表和数据字典表现在都在一个名为mysql.idbInNoDB表空间文件。...UNDO空间回收 MySQL5.7,我们已经可以截断UNDO空间了(设置innodb_undo_log_truncate,默认情况下禁用)。...MySQL8,我们改进了磁盘格式来使得每个UNDO表有大量UNDO段。 此外,现在默认为两个单独UNDO表空间(而非InnoDB系统表空间(最小为2,大小动态变化))创建UNDO段。...UTF8性能改进 UTF8性能 由于默认字符集已经从latin1改为utf8mb4,因此现在UTF8速度要快得多,特定查询时速度提高了1800%!...加密表空间中REDO日志和UNDO日志都将被加密 MySQL 5.7,可以为存储每个表表加密InnoDB表空间。

99730

❤️爆肝3万字,最硬核丨Mysql 知识体系、命令全集 【建议收藏 】❤️

) 表主键 5) 表具体行数 6) CURD操作 7) 外键 8) 查询效率 9)MyISAM和InnoDB两者应用场景 4.了解一下字符集和乱码 字符集简介 5.MySQLutf8和utf8mb4...如果应用需要执行大量INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作性能。现在默认使用InnoDB。...更详细Unicode和其编码方案知识不是本书重点,大家上网查查哈~ MySQL并不区分字符集和编码方案概念,所以后边唠叨时候把utf8、utf16、utf32 都当作一种字符集对待。...而在 MySQL 字符集表示一个字符所用最大字节长度某些方面会影响系统存储和性能,所以设计 MySQL大叔偷偷定义了两个概念: utf8mb3 :阉割过 utf8 字符集,只使用1~3个字节表示字符...有一点需要大家十分注意, MySQL  utf8 是 utf8mb3 别名,所以之后 MySQL 中提到 utf8 就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符情况

56320

mysql导入sql脚本出现there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE

:\Program Files\MySQL\mysql-5.7.25\data # 允许最大连接数 max_connections=200 # 服务端使用字符集默认为8比特编码...latin1字符集 character-set-server=utf8 # 创建新表时将使用默认存储引擎 default-storage-engine=INNODB sql_mode...] # 设置mysql客户端默认字符集 default-character-set=utf8 3、cmd下,路径:D:\Program Files\MySQL\mysql-5.7.25...),重启MySQL服务 5、mysql -u root -p登录数据库完成(可免密登录) 6、最后记得修改环境变量pathmysql路径 出现问题2: idea使用过程mysql出现如下错误:Table...' doesn't exist -> [Help 1] 解决办法: cmd下,mysql本版本bin目录下执行:mysql_upgrade -u root -p --force命令 出现如下结果即执行成功

51440

Whats New in MariaDB 10.4

现在人们越来越喜欢使用 emojis 图,这些图需要 utf8 字符集进行存储,所以这是一个相当重要改进。...由于现在可以将条件下推到物化子查询,所以 MariaDB 10.4 IN() 子查询效率更高。 依赖于 redo log 大小,启动和关闭 InnoDB 会花费一段时间。...你可能想知道在生产环境中最常见操作是什么?添加和删除索引尤为重要。另外一个常见操作时添加新列或者删除索引。...用户账户和全局权限将存到 mysql.global_priv 表。对于通过选项管理 MySQL 和 MariaDB 用户工具来说,这些改变很重要。...MariaDB分支 最近看到一篇博客解释 MariaDB InnoDB 改进和兼容性方面的观点。主要是 MariaDB 不再从 MySQL 合入 InnoDB 新特性,将关注稳定性和性能提升。

48610

2021-2-18:请你说说MySQL字符集与排序规则对开发有哪些影响?

gbk: GBK是gb2312基础上扩容后标准。收录了所有的中文字符。同样,这是一个变长字符集,如果该字符ascii字符集中,则采用1字节编码,否则采用两字节。...MySQL为了节省空间,其中utf8是标准 UTF8 阉割后,只有1~3字节编码字符集,基本包含了所有常用字符。...information_schema.character_sets表,也可以看到所有的字符集mysql> select * from information_schema.character_sets...,如果只修改了比较规则,字符集也会跟着变化,具体规则如下: 只修改字符集,则比较规则将变为修改后字符集默认比较规则。...列级别 可以创建表时候,指定不同列有不同字符集和排序规则,也可以修改列字符集和排序规则: mysql> create table test (name varchar(32) character

1.1K20
领券