返回顶部
首页 > 资讯 > 数据库 >Windows下mysql 5.7 设置区分大小写(敏感),设置默认编码 utf8mb4
  • 877
分享到

Windows下mysql 5.7 设置区分大小写(敏感),设置默认编码 utf8mb4

2024-04-02 19:04:59 877人浏览 薄情痞子
摘要

修改编码 c盘下搜索 C:\ProgramData\Mysql\MySQL Server 5.7 在该my.ini文件下进行配置修改 [client] default-character-set = utf8mb4

修改编码

c盘下搜索

C:\ProgramData\Mysql\MySQL Server 5.7

在该my.ini文件下进行配置修改

[client] 
default-character-set = utf8mb4

[mysql] 
default-character-set = utf8mb4

[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect='SET NAMES utf8mb4'

区分大小写

window下 改为2,

lower_case_table_names=2

最后保存 配置文件的时候注意 文件格式 ,类型 必须是 ANSI ,不小心保存成 utf-8 将不能启动服务,

重启mysql 服务ok

怎么从utf8转换为utf8mb4

3.1 “伪”转换

如果你的表定义和连接字符集都是utf8,那么直接在你的表上执行

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

则能够该表上所有的列的character类型变成 utf8mb4,表定义的默认字符集也会修改。连接的时候需要使用set names utf8mb4便可以插入四字节字符。(如果依然使用 utf8 连接,只要不出现四字节字符则完全没问题)。

上面的 convert 有两个问题,一是它不能ONLINE,也就是执行之后全表禁止修改,有关这方面的讨论见 mysql 5.6 原生Online DDL解析;二是,它可能会自动该表字段类型定义,如 VARCHAR 被转成 MEDIUMTEXT,可以通过 MODIFY 指定类型为原类型。

另外 ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 这样的语句就不要随便执行了,特别是当表原本不是utf8时,除非表是空的或者你确认表里只有拉丁字符,否则正常和乱的就混在一起了。

最重要的是,你连接时使用的latin1字符集写入了历史数据,表定义是latin1或utf8,不要期望通过 ALTER ... CONVERT ... 能够让你达到用utf8读取历史中文数据的目的,没卵用,老老实实做逻辑dump。所以我才叫它“伪”转换

3.2 character-set-server

一旦你决定使用utf8mb4,强烈建议你要修改服务端 character-set-server=utf8mb4,不同的语言对它的处理方法不一样,c , PHP, python可以设置character-set,但Java驱动依赖于 character-set-server 选项,后面有介绍。

同时还要谨慎一些特殊选项,如 遇到腾讯云CDB连接字符集设置一个坑。个人不建议设置全局 init_connect。

key 768 long 错误

字符集从utf8转到utf8mb4之后,最容易引起的就是索引键超长的问题。

对于表行格式是 COMPACT或 REDUNDANT,InnoDB有单个索引最大字节数 768 的限制,而字段定义的是能存储的字符数,比如 VARCHAR(200) 代表能够存200个汉字,索引定义是字符集类型最大长度算的,即 utf8 maxbytes=3, utf8mb4 maxbytes=4,算下来utf8和utf8mb4两种情况的索引长度分别为600 bytes和800bytes,后者超过了768,导致出错:Error 1071: Specified key was too long; max key length is 767 bytes。

COMPRESSED和DYNAMIC格式不受限制,但也依然不建议索引太长,太浪费空间和cpu搜索资源。

如果已有定义超过这个长度的,可加上前缀索引,如果暂不能加上前缀索引(像唯一索引),可把该字段的字符集改回utf8或latin1。
但是,( 敲黑板啦,很重要 ),要防止出现 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation '=' 错误:连接字符集使用utf8mb4,但 SELECT/UPDATE where条件有utf8类型的列,且条件右边存在不属于utf8字符,就会触发该异常。表示踩过这个坑。

再多加一个友好提示:EXPLaiN 结果里面的 key_len 指的搜索索引长度,单位是bytes,而且是以字符集支持的单字符最大字节数算的,这也是为什么 INDEX_LENGTH 膨胀厉害的一个原因。

到此这篇关于windows下mysql 5.7 设置区分大小写(敏感),设置默认编码 utf8mb4的文章就介绍到这了,更多相关mysql 5.7区分大小写utf8mb4编码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: Windows下mysql 5.7 设置区分大小写(敏感),设置默认编码 utf8mb4

本文链接: https://lsjlt.com/news/80139.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Windows下mysql 5.7 设置区分大小写(敏感),设置默认编码 utf8mb4
    修改编码 c盘下搜索 C:\ProgramData\mysql\MySQL Server 5.7 在该my.ini文件下进行配置修改 [client] default-character-set = utf8mb4 ...
    99+
    2024-04-02
  • Windows下mysql5.7设置区分大小写(敏感),设置默认编码utf8mb4
    修改编码 c盘下搜索 C:\ProgramData\MySQL\MySQL Server 5.7 在该my.ini文件下进行配置修改 [client] default-charac...
    99+
    2022-11-13
    mysql 5.7 大小写 mysql 5.7utf8mb4
  • mysql大小写敏感设置
    一.mysql大小写敏感设置 停止MySQL服务器 [root@localhost ~]# systemctl stop mysqld 修改mysql配置,添加lower_case_table_nam...
    99+
    2023-09-07
    mysql 服务器 数据库
  • Windows Mysql8如何设置大小写敏感
    小编给大家分享一下Windows Mysql8如何设置大小写敏感,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!windows系统mysql8.0更改lower_case_table_names...
    99+
    2024-04-02
  • MySQL中大小写敏感设置方法
    本文主要给大家简单讲讲MySQL中大小写敏感设置方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL中大小写敏感设置方法这篇文章可以给大家带来一些实...
    99+
    2024-04-02
  • mysql怎么设置大小写不敏感
    这篇文章将为大家详细讲解有关mysql怎么设置大小写不敏感,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。mysql设置大小写不敏感的方法:1、打开并编辑“m...
    99+
    2024-04-02
  • mysql中如何设置大小写不敏感
    目录mysql设置大小写不敏感原理与参数修改前准备正式设置 mysql大小写不敏感,设置不生效的解决解决思路总结mysql设置大小写不敏感 原理与参数 mysql大小写敏感配置与两个参数相关 —&m...
    99+
    2023-04-12
    mysql设置大小写 大小写不敏感 mysql大小写不敏感
  • mysql中怎么设置大小写不敏感
    这篇文章主要介绍了mysql中怎么设置大小写不敏感的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql中怎么设置大小写不敏感文章都会有所收获,下面我们一起来看看吧。mysql设置大小写不敏感原理与参数mys...
    99+
    2023-07-06
  • mysql如何设置不区分大小写
    mysql设置不区分大小写 windows下 到安装mysql的目录,修改my.ini文件 在文件最后一行加上下面一句话 lower_case_table_names=1 说明 0:区分大小写,1:不区分大小写 ...
    99+
    2022-05-11
    mysql 不区分大小写
  • mysql设置不区分表名大小写
    MySql默认是区分表名大小的,为了不区分表名大小写,我们需要完成以下配置 十分简单 1.使用root用户,修改/etc/my.cnf文件 在[mysqld]下添加 lower_case_table_names=1 ...
    99+
    2023-08-31
    mysql Powered by 金山文档
  • mysql如何设置表名不区分大小写
    这篇文章主要介绍mysql如何设置表名不区分大小写,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 方法:1、利用root登录,并打开“/etc/my.cn...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作