MySQL CHARACTER SET utf8mb4 VARCHAR 长度

标签 mysql utf-8 character-encoding utf8mb4

过去几天一直在寻找从各种受支持的 MySQL 字符集转换为使用 utf8mb4 的任何陷阱。大多数人面临的最大问题似乎是 4 字节字符意味着 InnoDB 索引的最大长度,对于像 VARCHAR 这样的列类型,限制为 191 而不是 255。它还提到非-indexed VARCHAR 列应该是 191 而不是 255。

测试后,我发现如果列已编入索引,则在将列转换为 255 时会收到错误消息,但未编入索引时则不会。如果将来没有索引非索引 VARCHAR 列的长度从 255 减少到 191,是否有任何理由将其减少?

最佳答案

阅读this有关 767 限制和各种解决方法的讨论。请注意,一种解决方法是更新到版本 5.7,这会将限制增加到 3KB 以上。

(我正在更改您的标题,因为整理与问题无关。)

关于MySQL CHARACTER SET utf8mb4 VARCHAR 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48500355/

相关文章:

php - URL 的密码保护

php - 无法使用 php 脚本连接到我的 Bluehost SQL 数据库

mysql - cakephp3 中的递归?

python - 无法在 python 中将 unicode 转换为 utf-8

C++ 特殊字符

Java:字符串中每个字符的大小

不等于多个值的mysql语法

unicode - 印地语重音字符的 unicode 范围是多少?

python - 如何确定 CSV 文件的编码?

jquery - 为什么浏览器对 ajax 请求的特殊字符进行不同的编码?