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

技术分享 | 为什么我的 MySQL 客户端字符集为 latin1

问题背景 我司某客户最近在检查一批新安装的 MySQL 数据库时,发现了下面的现象: 该批次的 MySQL 客户端字符集全部为 Latin1 ; 而之前使用同样参数模板部署的 MySQL ,客户端字符集却为...,而原先的为 en_US.UTF-8 [qinguangfei0511-4.png] 好像找到了问题出在哪里,测试环境验证下,果然当服务器字符集设置为 en_US 后,MySQL 客户端字符集变为了 Latin1...翻译下来,大致有两点含义: mysql, mysqladmin, mysqlcheck, mysqlimport, and mysqlshow 这些客户端工具都有一个默认的字符集,MySQL 5.7 是 latin1...MySQL支持操作系统的字符集,就会使用操作系统的(这里支持包括不完全精确匹配时,OS字符集将映射到最接近的MySQL字符集);如果不支持,就使用客户端默认字符集; 我们知道en_US最接近的字符集就是Latin1...,所以回到我们的问题,当服务器的字符集为en_US后,我们看到MySQL客户端字符集为Latin1 ,是不是可以理解了 而使用MySQL 8.0的客户端,能进一步验证当不能精确匹配时,就使用MySQL最接近的字符集

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    技术分享 | 为什么我的 MySQL 客户端字符集为 latin1

    问题背景 我司某客户最近在检查一批新安装的 MySQL 数据库时,发现了下面的现象: 该批次的 MySQL 客户端字符集全部为 latin1 ; 而之前使用同样参数模板部署的 MySQL ,客户端字符集却为...又查看了服务器上操作系统的字符集,发现有问题的为 en_US ,而原先的为 en_US.UTF-8 好像找到了问题出在哪里,测试环境验证下,果然当服务器字符集设置为 en_US 后,MySQL 客户端字符集变为了 latin1...翻译下来,大致有两点含义: mysql ,mysqladmin ,mysqlcheck ,mysqlimport ,and mysqlshow 这些客户端工具都有一个默认的字符集,MySQL 5.7 是 latin1...支持操作系统的字符集,就会使用操作系统的(这里支持包括不完全精确匹配时,OS 字符集将映射到最接近的 MySQL 字符集);如果不支持,就使用客户端默认字符集; 我们知道 en_US 最接近的字符集就是 latin1...,所以回到我们的问题,当服务器的字符集为 en_US 后,我们看到 MySQL 客户端字符集为 latin1 ,是不是可以理解了 而使用 MySQL 8.0 的客户端,能进一步验证当不能精确匹配时,就使用

    1.4K30

    MySQL一个字符集转换的骚操作,酿下性能的苦果

    整个细节可以参见我写的这篇文章的处理过程: 力荐:一条update语句引发的“血案” 当时有一个地方没有想明白,那就是里面的字段APNS_PUSH_ID为什么字符集会是latin1,而表的字符集却妥妥的是...创建一张表test_charset,设置字符集为latin1 mysql> create table test_charset(id int primary key,name varchar(30),...memo varchar(30)) charset=latin1; Query OK, 0 rows affected (0.12 sec) 查看表结构,可以清晰的看到,字段是共享了表的默认字符集,没有显式显示出来...字符集现在显式显示出来了,表的字符集是utf8,但是字符类型的字段字符集依然是latin1 mysql> show create table test_charset\G **************...DEFAULT NULL, `memo` varchar(30) CHARACTER SET latin1 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=

    54730

    pt-osc改表过程中的中文乱码问题

    // pt-osc改表过程中的中文乱码问题 // 下午使用pt-osc工具对线上表进行变更的时候,发现了一个问题,在对latin1字符集进行变更的时候,变更完毕之后的表的中文注释都变成了'?'...name` varchar(10) DEFAULT NULL COMMENT '任务名称', PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=latin1...--execute 首先创建一张字符集为latin1的表,它包含id和name两个字段,然后对这个表的name字段添加索引,变更的pt指令如上文,其中: --charset=latin1 当我们变更完成之后..., PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set...如果我们使用latin1这个字符集,则说明pt-osc工具和mysql交互的字符集是latin1,而这个字符集是无法保存汉字的,所以结果中就出现了????的字眼。

    1.6K10

    MySQL的安装与配置

    --------------------------+-------------------------------------------+    | 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...1,方案一:在插入数据之前,先执行一条指令:set names latin1,但是我们如果断开连接,退出数据库之后,在连接进来以后,插入数据时如果不执行set names latin1,还是会乱码,说明这句指令没有让字符集永久生效...   2,方案二:在配置文件里面修改客户端和服务端参数,可以实现set names latin1;的效果,并且永久生效     首先在mysql文件夹下加入一个my.ini配置文件 ?

    1.1K20
    领券