栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL错误:没有密钥长度的密钥规范

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL错误:没有密钥长度的密钥规范

发生错误是因为MySQL只能索引BLOB或

TEXT
列的前N个字符。所以错误主要发生时,有一个领域/列类型
TEXT
或BLOB或那些属于
TEXT
BLOB
类型,如
TINYBLOB
MEDIUMBLOB
LONGBLOB
TINYTEXT
MEDIUMTEXT
,和
LONGTEXT
您尝试使一个主键或索引。无论长度是完整的
BLOB
还是
TEXT
没有长度的,MySQL都无法保证列的唯一性,因为它具有可变大小和动态大小。因此,当使用
BLOB
or
TEXT
类型作为索引时,必须提供N的值,以便MySQL可以确定键的长度。但是,MySQL不支持
TEXT
或上的密钥长度限制
BLOB
TEXT(88)
根本行不通。

当您尝试将表列从

non-TEXT
non-BLOB
类型(如
VARCHAR
ENUM
转换为
TEXT
BLOB
类型)转换为错误,并且该列已被定义为唯一约束或索引时,也会弹出该错误。Alter
Table SQL命令将失败。

该问题的解决方案是从索引或唯一约束中删除

TEXT
BLOB
列,或将另一个字段设置为主键。如果您不能这样做,并且想对
TEXT
or
BLOB
列设置限制,请尝试使用
VARCHAR
type并对其限制长度。默认情况下,
VARCHAR
最大限制为255个字符,并且必须在声明后立即在括号内隐式指定其限制,即,
VARCHAr(200)
将其限制为仅200个字符长。

有时,即使您没有在表中使用

TEXT
BLOB
相关类型,也可能会出现错误1170。例如,当您将
VARCHAR
列指定为主键,但是错误地设置了它的长度或字符大小时,就会发生这种情况。
VARCHAR
最多只能接受256个字符,因此,诸如此类的任何操作都
VARCHAr(512)
将迫使MySQL自动将其转换
VARCHAr(512)
SMALLTEXT
数据类型,如果将该列用作主键或唯一或非唯一索引,则该操作随后将失败,键长度错误1170。要解决此问题,请指定小于256的数字作为
VARCHAR
字段的大小。

参考:MySQL错误1170(42000):键规范中使用的BLOB /
TEXT列没有键长



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号