You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL建表报#1170错误:TEXT字段用作键未指定键长问题咨询

#1170 - BLOB/TEXT column 'name' used in key specification without a key length

报错产生原因

该报错是MySQL针对TEXT/BLOB类型字段设置索引/外键时的固有规则限制,具体成因如下:

  • TEXT属于可变长大文本类型,存储长度不固定,MySQL无法直接对这类字段做全长度的索引校验或外键关联校验。如果要给TEXT类型字段创建索引,必须指定前缀长度(例如INDEX (name(100))代表仅对name字段前100个字符创建索引),你在创建name字段的外键时没有指定对应前缀长度,直接触发了该报错。
  • 即使你给TEXT字段补充了前缀索引,也无法满足外键的关联要求:外键要求父表(此处为cars表)的被关联列必须是完整的主键或者唯一索引,而TEXT/BLOB类型本身就不支持设置全长度的唯一约束或主键,本质上TEXT类型字段不能作为外键的关联字段。
推荐修复方案

你可以根据业务需求选择以下任意一种方案修复:

  • 方案一:将cars和carsindrive两张表的name字段类型改为有固定长度上限的VARCHAR类型,比如VARCHAR(255),即可满足外键关联的类型要求。
  • 方案二:调整外键关联逻辑,使用cars表的整型主键ID作为关联字段,在carsindrive表新增对应关联ID字段做外键,该方案更符合关系型数据库设计规范,查询和关联校验的性能也更高。

内容的提问来源于stack exchange,提问作者Роман

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:48:04