常见发布失败及解决办法

发布时,经常由于配置错误等原因,导致数据发布失败,下面列举常见的失败情况,以及解决方法。

utf8mb4: Incorrect string value

这种错误一般多见于mysql数据库发布,原始报错信息为:

Incorrect string value: '\xF0\x9F\x8C\xB8\xE7\x9B...' for column 'article_title' at row 1

一般是因为数据中包含了emoji表情,这种表情是4个字节的utf8,mysql需要使用utf8mb4字符编码才能存储。
解决办法是把数据表中对应字段的编码改为utf8mb4,如上面这个报错信息,需要把字段article_title的编码改为utf8mb4
可以使用数据库管理工具修改,也可以使用sql语句进行修改。建议使用管理工具进行修改,不容易出错。
sql语句示例:(注意:这里只是示例,实际要执行的sql语句需要结合您的数据库进行修改)

ALTER TABLE `wo_article` MODIFY COLUMN `article_title` VARCHAR(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Read timed out

这种错误一般多出现在【发布至网站】和【发布至数据库】。
错误原因是:神箭手发布到网站或者数据库时,目标网站或数据库响应超过60s。
如果是网站,解决方案如下:
1.首先,排查一下您网站的神箭手数据采集插件是否开启了标题去重,如有(并不需要此功能)—>请关闭后重试。
1.1如果您需要标题去重功能,请给发布过去的那张表建立索引,加快查询速度,示例如下(本例使用普通索引)

ALTER TABLE `test_article` ADD INDEX (`article_title`);
-- 通用语法: ALTER TABLE table_name ADD INDEX (column);

2.然后,排查是否是您网站的数据库停止运行了或则数据库中发布过去的那张表被死锁了。
3.最后排查你的网站的服务器配置,将配置升级(带宽)。

如果是数据库,解决方案如下:
1.首先,排查您网站的数据库是否停止运行了。
2.然后,排查你方网站的数据库是否存在插入数据时性能问题,SQL语句示例如下

show full PROCESSLIST ;

3.最后排查你的网站的服务器配置,将配置升级(带宽)。

SyntaxError: Invalid JSON

这种错误一般多出现在【发布至网站:帝国CMD、WordPress、DEDECMS(织梦)】。
错误原因:一般多见于您的网站web服务反回403错误,被拒绝访问了,而导致403的原因有很多。
帝国解决示例:网站原始报错信息如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>403 Forbidden</title>
</head>
<body>

<h1>403 Forbidden</h1>

<p>A potentially unsafe operation has been detected in your request to this site.</p>

</body>
</html>

1.确认你网站使用的发布账号拥有完全控制权限,并且完整权限为755以上。
2.请尝试先将你网站的安全插件暂时关闭后重试

WordPress解决示例:
1.确认你网站使用的发布账号拥有完全控制权限.
2.请尝试先将您网站上安装的安全插件暂停使用。
DEDECMS解决示例:
1.确认你网站使用的发布账号拥有完全控制权限。
2.请尝试下更新你的站点缓存,并确保你发布的栏目在文件目录中存在。
3.请尝试先将您网站上安装的安全插件暂停使用。

  • 如果您的网站是IIS架构的,请打开目录浏览权限。

Data truncation: Data too long for column ‘detail’(字段名) at row 1

这种错误一般多出现在【MySQL 发布接口】。
错误原因:你发布的数据中的字段超出了你数据库中该字段定义的长度
解决方案:需要把字段detail的长度加大。可以使用数据库管理工具修改,也可以使用sql语句进行修改。建议使用管理工具进行修改,不容易出错。
sql语句示例:(注意:这里只是示例,实际要执行的sql语句需要结合您的数据库进行修改)

ALTER TABLE `jingo_article` MODIFY COLUMN `detail` VARCHAR (256);

Duplicate entry ‘【券商研报】金融防风险的下一站——每周经济’ for key ‘title’

这种错误一般多出现在【网站发布接口:DEDECMS(织梦)、WordPress】
错误原因是因为title是一个唯一索引,不能插入重复的值,而【券商研报】金融防风险的下一站——每周经济title列中已经存在了。
解决方案如下:
1.如果需要用新爬取到的【券商研报】金融防风险的下一站——每周经济这条数据替代原来已经存在的数据:删除数据库中原来的那条数据,重新发布新爬取到的数据。
2.如果,不需要这条重复的数据,则直接在爬取到的数据中删除该数据即可
3.如果需要两条title相同但数据内容不相同的数据,则删除该字段的唯一的索引。
可以使用数据库管理工具修改,也可以使用sql语句进行修改。建议使用管理工具进行修改,不容易出错。
sql语句示例:(注意:这里只是示例,实际要执行的sql语句需要结合您的数据库进行修改)

ALTER TABLE `test` DROP UNIQUE ('title');

MySQL 索引操作相关文档

Duplicate entry ‘59965’ for key ‘PRIMARY’

这种错误一般多出现在【MySQL 发布接口】
错误原因是:59965是重复的主键。
解决方案是:请在神箭手发布设置中,字段映射处,将id所对应的下拉菜单设置为空,如图:
示例