场景
数据库使用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-noinstall-5.0.22-win32为例,解压缩后会看到mysql-5.0.22-win32文件夹下面,有五个ini格式的文件,把my-medium.ini文件拷贝一份,... 您可能感兴趣的文章:MySQL修改默认字符集编码的方法mysql通过my.cnf修改
3. **数据类型**:MySQL支持多种数据类型,如整数类型(INT, TINYINT等)、浮点数类型(FLOAT, DOUBLE)、字符串类型(CHAR, VARCHAR)、日期时间类型(DATE, TIME, DATETIME)等,理解它们的差异和适用场景很重要。...
4. **05-MySQL字符集.pdf**:字符集和排序规则是处理多语言数据的关键,这部分将阐述如何选择和配置合适的字符集,确保数据的正确存储和检索。 5. **06-MySQL创建表.pdf**:可能深入讨论更复杂的数据表设计,如复合...
此外,它还可能涉及配置文件my.cnf的设置,如数据目录、端口号、字符集等。 2. **SQL语法**:基础的SQL语句如SELECT、INSERT、UPDATE和DELETE,以及更复杂的联接(JOIN)、子查询、视图(VIEW)和存储过程...
文档中提到了设置字符集为"GBK"或"utf8",这两种都是中文环境下常用的字符集。在进行设置时,可以使用"SET NAMES GBK;"或"SET NAMES utf8;"这样的命令来指定字符集。 四、MySQL服务的安装和启动 MySQL服务的安装和...
字符集和排序规则也非常重要,它们定义了数据的字符编码方式。表引擎描述了存储表和索引的方式。索引用于加速数据查询,有多种类型,比如B-Tree索引、哈希索引等。 在数据操作方面,本书讲解了增删改查(CRUD)操作...
例如,“my.cnf”是MySQL的配置文件,用于设置服务器的参数,如端口号、默认字符集、缓存大小等。 在使用MySQL时,你需要了解一些基本的命令行工具,比如“mysql”客户端,用于连接到服务器并执行SQL查询;...
mysql中文排序方法1 mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,比较应急的方法是对于包含中文的字段加上”...
10. **Unicode支持**:全面支持Unicode字符集,满足全球化应用的需求。 《MySQL 5.1参考手册》中详细介绍了以上所有特性,还包括SQL语法、数据类型、索引、备份恢复、网络配置等多个方面的内容。通过学习这份手册,...
DBA需要掌握创建数据库时选择合适的字符集和校对规则、为表的字段创建和管理索引(包括主键、普通索引和联合索引)等。 7. 创建MySQL用户及赋予用户权限 在多用户数据库环境中,DBA需要根据业务需求创建用户,并...
2. **表字符集选择utf8mb4**:utf8mb4字符集支持四字节的Unicode字符,如Emoji表情,可以避免乱码问题并提高兼容性。 3. **添加注释**:为表和字段添加注释便于理解和维护,从一开始就进行数据字典的管理。 4. **...
- 了解 MySQL 字符集。 - 理解和掌握 MySQL 的数据类型。 - 正确理解主键和外键的作用。 - 以联系人数据库为案例,学会用图形界面工具创建数据库、表。 - 学会用图形界面工具录入数据和查询数据。 - 能够正确...
1、linux 中 MySQL 出现中文乱码问题如下操作 编辑vi /etc/my.cnf 文件,添加图中标记三行 [client] default-character-set=utf8 ...查看表的设计表中的字符集 您可能感兴趣的文章:MySQL错误TIMESTAMP col
##### 步骤3:配置MySQL数据库的字符集 数据库是数据存储的核心,确保其使用正确的字符集至关重要。我们需要修改MySQL的配置文件`my.ini`。 1. 找到MySQL安装目录下的`my.ini`文件。 2. 在`[client]`段落下添加或...
7. **故障排查**:提供在迁移过程中可能遇到的问题及其解决办法,比如数据类型不匹配、字符集问题、编码问题等。 8. **备份与恢复**:强调在迁移前进行完整数据库备份的重要性,并可能涵盖在MySQL中进行备份和恢复...
8. 字符集设置:为了处理中文等特殊字符,需要在my.ini中配置字符集,包括客户端默认字符集(default-character-set)和服务器端字符集(character-set-server)均设置为utf8。 以上是根据提供的文档内容总结的知识...
- **Default Charset**:选择合适的字符集,通常选择UTF-8。 连接成功后,你会看到几个数据库,包括information_schema和test,这两个是系统数据库,不应进行修改。你的自定义数据库会显示在列表中,展开后可以查看...
- 设置客户端字符集:`SET character_set_client = 'gbk';` - 修改配置文件 `my.ini` 来永久更改配置。 #### 数据类型 MySQL支持多种数据类型,每种类型都有其特定用途。 - **整数类型**:包括 `TINYINT`, `...