博客 https://blog.hanbinit.com.cn 是用typecho搭建的。
问题描述
最近开始写公众号了,将博客的链接加到了微信的原文链接中。但是有人反馈说原文链接打开报错,遂检查,发现确实打不开,错误如图:
换用其他浏览器打开都是正常的。
分析过程
首先通过在根目录下的config.inc.php中添加define('__TYPECHO_DEBUG__', true);
开启typecho的debug模式。
执行service nginx restart
重启nginx,使上面的配置生效。
重新使用微信浏览器打开,这次提示了详细的错误信息。
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'ua' at row 1
按照错误提示去分别查看微信浏览器UA(使用微信开发者工具),PC浏览器UA,以及数据库的ua
字段大小。
微信:Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Mobile Safari/537.36 wechatdevtools/1.05.2102010 MicroMessenger/7.0.4 webview/16141376613598827 webdebugger port/22325 token/7c3a0c5eb7ac1ac7ed760c7c89af0e39
EDGE: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74
表结构:
ua
字段长度只有255,而微信的ua长度有274。所以就有了本文的问题。
修改ua
字段的长度,
alter table typecho_access modify column ua varchar(512);
再次访问正常。
最后,删除第一步添加的配置,关闭typecho的debug模式。
写在最后
这个表不是typecho原生的表,是我使用了一个Access插件引起的。 不使用这个插件应该不会有问题。