MySql 最大 key 太长, key 小于 767

标签 mysql

奇怪的问题,多年来我一直在本地 mysql 上创建数据库表,而我刚刚收到一条错误消息:

指定的 key 太长;最大 key 长度为 767 字节

错误的列如下:

`referenceperiod` VARCHAR(300) NULL

注意长度为 300,这是我上次检查时小于 767 的长度。我在该列上有一个索引,如果删除该索引,则可以构建表:

INDEX `idx_referenceperiod` (referenceperiod), 

奇怪的是,这不是我第一次构建这个精确的表 - 那么为什么它现在突然失败了...

最佳答案

如果你有一个 UTF8 排序规则,MySQL 为每个字符保留 3 个字节,在这种情况下,键总共变为 900 个字节。

900比767多,上次查的。 ;)

关于MySql 最大 key 太长, key 小于 767,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746880/

相关文章:

mysql - 从 A 表的一行中进行多项选择,并将结果作为多行插入 B 表中,并在一个查询中重复

带有 "<>"运算符的 MySQL SELECT 查询给出了奇怪的结果

java - 如何使用java 10连接到MySQL8.x数据库?

mysql - 在 R 中从 MySQL 获取 UTF-8 文本返回 "????"

mysql - 在mysql中将varchar字段作为整数排序

mysql - 此库存的数据值

mysql - 远程访问数据库

mysql - 如何将 GAE 连接到 Amazon RDS?

c# - 包括 MySQL Connector/ODBC 5.1 到 C# 应用程序

PHP 不能与 MySQL 查询一起使用?