场景
数据库使用mysql5, 在开发机器上测试过,增删查改都没有问题,然后拉到现网上灰度测试一下,发现部分含有中文的操作结果不符合预期,于是select了一下表里面的内容,发现内容中有许多????,直觉告诉我,charset问题。 然后回归线下,排除了程序的问题后,diff了两台mysql一些配置上的问题。
结果如下:
开发机器上的charset设置
现网机器上的charset设置
google一下关于character_set_client/connection/database/results:
简单摘要
character_set_client 客户端向服务器发送查询时的字符集
character_set_results 服务器向客户端发送数据时的字符集
character_set_connection 服务器将收到的查询串转换为此字符集
character_set_database 数据库默认的字符集
...其他几个掠过...
查了以后,再用show create table xxx 可以确认一下,果然table字符集默认采用了database的gbk。
最后解决,采用alter table 的Charset搞定,注意,如果你的表中已经有数据了,那么你需要自己写工具将数据dump出来再修正后插回去,否则直接这样alter对历史数据是无效的。
感悟
mysql 字符集层次架构非常灵活,但易用性确实差了一点。 层次也太多了,client|result , connection, database, os ; 不仅如此在同一database, 可对不同table,甚至到列作定制,确实超级灵活。
选项太多,出错的机会就更多。 如果只有一个选项,没得选,根本就没出错的机会。
另外,层次如果只有 client,database,os 那会怎样?我个人就觉得超级好理解。如果真有那么奇奇怪怪的需求如同一个系统中有n多种字符集,大可提到逻辑层来做。
- 大小: 41.9 KB
- 大小: 44.6 KB
分享到:
相关推荐
主要介绍了如何修改MySQL字符集,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
mysql_set_charset()。 这个函数是这样用的: mysql_set_charset(‘utf8’, $link); 成功返回 TRUE,失败返回 ... 您可能感兴趣的文章:MySQL查询随机数据的4种方法和性能对比MySQL的指定范围随机数函数rand()的使用技巧
以mysql-noinstall-5.0.22-win32为例,解压缩后会看到mysql-5.0.22-win32文件夹下面,有五个ini格式的文件,把my-medium.ini文件拷贝一份,... 您可能感兴趣的文章:MySQL修改默认字符集编码的方法mysql通过my.cnf修改
移动端的表情或者一些emoji是4字节的,但是utf-8是3字节的,这篇文章主要介绍了设置mysql5.7编码集为utf8mb4的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
还有比如授权,字符集等等。 适用人群:MySQL数据库技术人员,IT开发人员,DBA,其它对数据库感兴趣的朋友。 使用场景:需要在Linux环境中进行安装MySQL,需要有一定的Linux基础。 预期目标:本资源的目标是让大家少...
还有比如授权,字符集等等。 适用人群:MySQL8数据库技术人员,IT开发人员,DBA,其它对数据库感兴趣的朋友。 使用场景:需要在Linux环境中进行安装MySQL8,需要有一定的Linux基础。 预期目标:本资源的目标是让大家...
mysql中文排序方法1 mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,比较应急的方法是对于包含中文的字段加上”...
utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。 这篇文章给大家介绍了更改MySQL数据库的编码为utf8mb4的相关知识,感兴趣的朋友一起看看吧
1、linux 中 MySQL 出现中文乱码问题如下操作 编辑vi /etc/my.cnf 文件,添加图中标记三行 [client] default-character-set=utf8 ...查看表的设计表中的字符集 您可能感兴趣的文章:MySQL错误TIMESTAMP col
导入数据时,如果目标数据库或表是UTF-8字符集的,而导入SQL中有中文,可能在最终结果中出现乱码,此时只需在导入的SQL文件第一行加入如下内容 即可。/*!40101 SET NAMES utf8 */; 您可能感兴趣的文章:MySQL从...
2.2 表字符集使⽤UTF8MB4字符集,校验字符集使⽤utf8mb4_general_ci。 UTF8字符集存储汉字占⽤3个字节,存储英⽂字符占⽤⼀个字节 校对字符集使⽤默认的utf8mb4_general_ci。特别对于使⽤GUI⼯具设计表结构时,要...
mysql重装后出现乱码解决办法:只能在配置文件中将database 和 server 字符集 设置为utf8 ,否则不起作用,具体如下感兴趣的朋友可以参考下哈,希望对大家有所帮助
2、设置字符集为GB2312后保存好后确认退出。 3、再次测试一下。 您可能感兴趣的文章:基于SecureCRT向远程Linux主机上传下载文件步骤图解浅谈ubuntu 使用securecrt vi编辑出现的问题SecureCRT中文显示乱码问题的...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
.NET 2.0中的字符串比较 小试ASP.NET 2.0的兼容性 为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1...