苹果CMS采集报错1406、1170、1101 终极完美解决教程(红牛源超长标签问题)

image

 

苹果CMS采集报错1406、1170、1101 终极完美解决教程(红牛源超长标签问题)

一、问题现象

使用红牛影视源(hongniuzy2)采集数据时,采集中途卡死,无法入库,出现经典报错:
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column ‘vod_tag’ at row 1
简单解释:vod_tag 标签字段长度不足,采集到的视频标签太长,数据库存不下导致入库失败、采集中断。

二、问题根源分析

1、苹果CMS默认 vod_tag 字段长度仅 varchar(100),极其短小
2、红牛源、部分聚合源返回的标签是超长逗号拼接字符串
3、MySQL严格模式下,超长数据不会自动截断,直接报错终止采集
4、vod_tag 自带索引,导致无法直接改为TEXT,连续触发多层报错

三、全网常见错误尝试(全部踩坑失败)

错误1:直接改 varchar(191)

看似安全,但红牛源单条标签经常超过191字符,依旧报1406超长错误,无法根治。

错误2:执行 ALTER TABLE vod_tag TEXT DEFAULT ”

报错:#1101 – TEXT 类型不能设置默认值
MySQL硬性规则:BLOB/TEXT 字段禁止写 DEFAULT 默认值。

错误3:直接修改为 TEXT

报错:#1170 – BLOB/TEXT column ‘vod_tag’ used in key specification without a key length
原因:字段存在索引,索引不支持TEXT类型,必须先删索引。

四、最终完美根治方案(唯一可行)

核心逻辑:先删索引 → 再改TEXT字段 → 永久解决所有超长报错

步骤1:删除 vod_tag 索引(解决1170报错)

DROP INDEX vod_tag ON mac_vod;

步骤2:修改字段为TEXT(解决1406超长报错)

ALTER TABLE mac_vod MODIFY COLUMN vod_tag TEXT;

五、修改后效果

✅ 彻底解决 1406 Data too long 字段超长 报错
✅ 彻底解决 1170 索引不支持TEXT 报错
✅ 彻底解决 1101 TEXT不能带默认值 报错
✅ 红牛源、所有超长标签源均可正常采集
✅ 不影响网站播放、模板显示、内容入库、分类筛选
✅ 一劳永逸,后续无需再次修改数据库

六、修改影响说明(新手必看)

1、删除 vod_tag 索引 不影响网站任何核心功能
2、仅轻微影响「标签关键词搜索」,影视站几乎用不到
3、前台标签展示、标签筛选、内容完全正常
4、TEXT 字段支持65535字符,任何采集源标签都不会溢出

七、总结

苹果CMS采集红牛源报1406超长错误,不是源的问题,是数据库字段结构过于老旧
不要盲目改长度、不要关闭严格模式、不要截断数据。
正确标准解决方案:删索引 → 改TEXT,永久根治。
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容