首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL唯一键似乎只接受varchar的前17个字符

MySQL唯一键似乎只接受varchar的前17个字符
EN

Stack Overflow用户
提问于 2016-07-11 23:21:35
回答 0查看 56关注 0票数 0

我正在尝试弄清楚为什么我的数据库不接受使用InnoDB的MySQL v5.7.12上的复合唯一键。我发现了许多关于唯一键大小限制和问题的三个广告,但我的大小远远达不到这些限制(甚至少于255个字符!)。MySQL文档说密钥限制是3072字节!http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

为了简单起见,我提供了相关的字段信息:

代码语言:javascript
复制
| ascii_name      | varchar(200)     | YES  |     | NULL    |       |
| feature_class   | char(1)          | YES  |     | NULL    |       |
| feature_code    | varchar(10)      | YES  |     | NULL    |       |

我正在尝试添加一个复合唯一键

代码语言:javascript
复制
mysql> alter table geonames_geonames add unique (ascii_name,feature_code,feature_class);
ERROR 1062 (23000): Duplicate entry 'Rudkhaneh-ye Shur-STM-H' for key 'ascii_name'
mysql>

根据错误和表的内容,我认为它只使用了字段的前17个字符。但是为什么呢?如果我查一下桌子

代码语言:javascript
复制
mysql> select ascii_name,feature_code,feature_class from geonames_geonames where name like 'Rudkhaneh-ye Shur-%';
+-------------------------------+--------------+---------------+
| ascii_name                    | feature_code | feature_class |
+-------------------------------+--------------+---------------+
| Rudkhaneh-ye Shur-e Dehram    | STM          | H             |
| Rudkhaneh-ye Shur-e Sabzevar  | STM          | H             |
| Rudkhaneh-ye Shur-e Sar Dasht | STM          | H             |
+-------------------------------+--------------+---------------+
3 rows in set (0.00 sec)

mysql>

我也试着给出一个大小,但结果是一样的。

代码语言:javascript
复制
mysql> alter table geonames_geonames add unique (ascii_name(200),feature_code,feature_class);
ERROR 1062 (23000): Duplicate entry 'Rudkhaneh-ye Shur-STM-H' for key 'ascii_name'
mysql>

那么,这个限制是从哪里来的?有没有可能增加它?欢迎任何描述此限制的文档链接!

谢谢!

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38310625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档