AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-316222

Headbank's questions

Martin Hope
Headbank
Asked: 2020-08-06 14:21:47 +0800 CST

我可以有效地将 spamassassin 贝叶斯令牌从 utf8 CHAR(5) 转换为 BINARY(5) 吗?

  • 1

我的 spamassassin 设置非常旧,并且已经迁移到两台机器和多个 mysql 重新安装。我最近注意到,sa-learn在消息上运行时,我的日志中会出现大量错误,如下所示:

bayes: _put_token: SQL error: Incorrect string value: '\x8A\x98s\x9A\xC8' for column 'token' at row 1

我检查了数据库并进行了一些研究,发现这个非常古老的错误报告指出了这个问题:我的架构(非常!)过时了。该列bayes_token.token是CHAR(5)排序规则 utf8_general_ci,截至 9 年前,应该是BINARY(5).

我不能简单地转换列类型,因为许多 UTF8 5-char 值长于 5 个字节(表有 ~110K 行)。

我的问题是:是否有任何方法可以截断过长的标记,使它们在贝叶斯分类器中保持有效?或者如果失败了,我可以只删除那些行,以便我可以将其余部分转换为二进制?

更新:我确实设法将列内容传输到BINARY(5)表中的一个添加列(这里命名为token2),如下所示:

UPDATE bayes_token SET token2 = CONVERT(token USING latin1);

这与我所能想到的“退回”插入时令牌发生的事情一样接近。但是,结果列中有许多重复项,并且由于该token列是主键的一部分,这不好。

我认为数据可以保存,但可能不是纯 SQL。我需要:

  1. 从最新模式创建空表的新副本
  2. 对每个标记的所有重复项进行分组,并将这些行的值ham_count和spam_count最大值相加atime
  3. 将这些聚合结果插入到新表中
  4. 用新表替换原来的表
mysql spamassassin charset
  • 2 个回答
  • 209 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve