`
edison0663
  • 浏览: 79478 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

小感mysql字符集

阅读更多

场景


数据库使用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-noinstall-5.0.22-win32为例,解压缩后会看到mysql-5.0.22-win32文件夹下面,有五个ini格式的文件,把my-medium.ini文件拷贝一份,... 您可能感兴趣的文章:MySQL修改默认字符集编码的方法mysql通过my.cnf修改

    Mysql经典合集(笔记)(文档)

    3. **数据类型**:MySQL支持多种数据类型,如整数类型(INT, TINYINT等)、浮点数类型(FLOAT, DOUBLE)、字符串类型(CHAR, VARCHAR)、日期时间类型(DATE, TIME, DATETIME)等,理解它们的差异和适用场景很重要。...

    MySQL系统大师.rar

    4. **05-MySQL字符集.pdf**:字符集和排序规则是处理多语言数据的关键,这部分将阐述如何选择和配置合适的字符集,确保数据的正确存储和检索。 5. **06-MySQL创建表.pdf**:可能深入讨论更复杂的数据表设计,如复合...

    Mysql 5.5指导手册

    此外,它还可能涉及配置文件my.cnf的设置,如数据目录、端口号、字符集等。 2. **SQL语法**:基础的SQL语句如SELECT、INSERT、UPDATE和DELETE,以及更复杂的联接(JOIN)、子查询、视图(VIEW)和存储过程...

    Mysql5.0详细教程.pdf

    文档中提到了设置字符集为"GBK"或"utf8",这两种都是中文环境下常用的字符集。在进行设置时,可以使用"SET NAMES GBK;"或"SET NAMES utf8;"这样的命令来指定字符集。 四、MySQL服务的安装和启动 MySQL服务的安装和...

    3天入门MySQL.pdf

    字符集和排序规则也非常重要,它们定义了数据的字符编码方式。表引擎描述了存储表和索引的方式。索引用于加速数据查询,有多种类型,比如B-Tree索引、哈希索引等。 在数据操作方面,本书讲解了增删改查(CRUD)操作...

    mysql相关相关文件和库

    例如,“my.cnf”是MySQL的配置文件,用于设置服务器的参数,如端口号、默认字符集、缓存大小等。 在使用MySQL时,你需要了解一些基本的命令行工具,比如“mysql”客户端,用于连接到服务器并执行SQL查询;...

    mysql中文排序注意事项与实现方法

    mysql中文排序方法1 mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,比较应急的方法是对于包含中文的字段加上”...

    MySQL 5.1参考手册

    10. **Unicode支持**:全面支持Unicode字符集,满足全球化应用的需求。 《MySQL 5.1参考手册》中详细介绍了以上所有特性,还包括SQL语法、数据类型、索引、备份恢复、网络配置等多个方面的内容。通过学习这份手册,...

    MySQLDBA运维笔记

    DBA需要掌握创建数据库时选择合适的字符集和校对规则、为表的字段创建和管理索引(包括主键、普通索引和联合索引)等。 7. 创建MySQL用户及赋予用户权限 在多用户数据库环境中,DBA需要根据业务需求创建用户,并...

    MySQL数据库设计规范

    2. **表字符集选择utf8mb4**:utf8mb4字符集支持四字节的Unicode字符,如Emoji表情,可以避免乱码问题并提高兼容性。 3. **添加注释**:为表和字段添加注释便于理解和维护,从一开始就进行数据字典的管理。 4. **...

    《MySQL 数据库实战应用》课程教学.docx

    - 了解 MySQL 字符集。 - 理解和掌握 MySQL 的数据类型。 - 正确理解主键和外键的作用。 - 以联系人数据库为案例,学会用图形界面工具创建数据库、表。 - 学会用图形界面工具录入数据和查询数据。 - 能够正确...

    MySQL中文乱码问题解决方案

    1、linux 中 MySQL 出现中文乱码问题如下操作 编辑vi /etc/my.cnf 文件,添加图中标记三行 [client] default-character-set=utf8 ...查看表的设计表中的字符集 您可能感兴趣的文章:MySQL错误TIMESTAMP col

    JSP乱码终结者 屡试不爽

    ##### 步骤3:配置MySQL数据库的字符集 数据库是数据存储的核心,确保其使用正确的字符集至关重要。我们需要修改MySQL的配置文件`my.ini`。 1. 找到MySQL安装目录下的`my.ini`文件。 2. 在`[client]`段落下添加或...

    sqlserver2000数据库迁移mysql5.rar

    7. **故障排查**:提供在迁移过程中可能遇到的问题及其解决办法,比如数据类型不匹配、字符集问题、编码问题等。 8. **备份与恢复**:强调在迁移前进行完整数据库备份的重要性,并可能涵盖在MySQL中进行备份和恢复...

    win10下mysql5.7.21解压版安装教程

    8. 字符集设置:为了处理中文等特殊字符,需要在my.ini中配置字符集,包括客户端默认字符集(default-character-set)和服务器端字符集(character-set-server)均设置为utf8。 以上是根据提供的文档内容总结的知识...

    mysql数据库远程管理软件sqlyog基础使用教程

    - **Default Charset**:选择合适的字符集,通常选择UTF-8。 连接成功后,你会看到几个数据库,包括information_schema和test,这两个是系统数据库,不应进行修改。你的自定义数据库会显示在列表中,展开后可以查看...

    MySQL数据库入门--读书笔记(word)

    - 设置客户端字符集:`SET character_set_client = 'gbk';` - 修改配置文件 `my.ini` 来永久更改配置。 #### 数据类型 MySQL支持多种数据类型,每种类型都有其特定用途。 - **整数类型**:包括 `TINYINT`, `...

Global site tag (gtag.js) - Google Analytics