Typecho QQ内置浏览器不能发表评论的解决方法

终于盼来了 Typecho 1.1,虽然因为时间关系还没给这些博客升级,我也算是新安装了一个 Typecho 博客。不过却发现访客没法在手机 QQ 里发表评论,提示 Database Query Error。打开 Typecho 的 DEBUG 模式,发现是因为客户端的 UserAgent 太长(data too long for column 'agent' at row 1)。

我还以为是之前为了支持原生 emoji 表情而把数据库字符集改为 uft8mb4 所致。然后我看了一下数据库结构,看了一下手机 QQ 内置浏览器的 UA:

Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B202 QQ/7.2.9.404 V1_IPH_SQ_7.2.9_1_APP_A Pixel/750 Core/UIWebView Device/Apple(iPhone 6s) NetType/4G QBWebViewType/1

竟然超过了 220 字符。而另一个 Android 的:

Mozilla/5.0 (Linux; Android 7.0; HUAWEI NXT-AL10 Build/HUAWEINXT-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043622 Safari/537.36 V1_AND_SQ_7.1.8_718_YYB_D QQ/7.1.8.3240 NetType/WIFI WebP/0.3.0 Pixel/1080

足足 267 字符!

typecho_comments 表 agent 类型为 varchar(200),才 200 字符的长度(实际还少一点)。于是我赶紧把 agent 字段的属性改为 varchar(300),遂解决。

然而暂时没有做更多测试,不确定是不是跟我改了字符集有关。目前在 Typecho 官方 GitHub 上提了一个 issue。提的时候发现新版竟然改用了 150 字符,更少了。

Try Ctrl+Enter :)