Skip to content

[Bug] 消息过长导致数据库存不进去 #75

@Komeiji0Koishi

Description

@Komeiji0Koishi

Plugin Version

2.0.6

AstrBot Version

4.14.5

Database Type

MySQL

Operating System

Windows

Bug Description

�[32m[10:18:23.137]�[0m [Core] �[31m�[1m[ERRO]�[0m [v4.19.4] [facades.jargon_facade:120]: �[31m�[1m[JargonFacade] 插入黑话失败: (pymysql.err.DataError) (1406, "Data too long for column 'raw_content' at row 1")

向mysql保存消息的时候,由于消息太长(多层的转发消息,解析之后特别长)超过了mysql中message字段的TEXT的最大长度(TEXT: 最大长度为 65,535 字节,大约是 64KB),然后导致存不进去报错。

Steps to Reproduce

qq中转发一个多层的转发消息,并且开启了转发消息解析。

Expected Behavior

正常保存

Error Logs

�[32m[10:18:23.137]�[0m [Core] �[31m�[1m[ERRO]�[0m [v4.19.4] [facades.jargon_facade:120]: �[31m�[1m[JargonFacade] 插入黑话失败: (pymysql.err.DataError) (1406, "Data too long for column 'raw_content' at row 1")

Relevant Configuration

Additional Context

解决办法:
两种办法二选一,
1,把mysql中"raw_messages"表的"message"的字段从text改成 LONGTEXT: 最大长度为 4,294,967,295 字节,大约是 4GB。
2,添加一个截断功能,消息太长就截了,只保存前面部分的,后面不要了。
我改了一下:
jargon_facade.py

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions