栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号