【发布时间】:2015-12-06 19:01:48
【问题描述】:
我想插入一个包含 1,397,025 个字符的查询,但没有插入。服务器没有向我提供错误消息。所以我的想法是,查询是否有字符限制?
【问题讨论】:
-
insert a query: 您是否尝试执行插入语句,其值具有 ~ 1.4 MB 的数据?
我想插入一个包含 1,397,025 个字符的查询,但没有插入。服务器没有向我提供错误消息。所以我的想法是,查询是否有字符限制?
【问题讨论】:
insert a query: 您是否尝试执行插入语句,其值具有 ~ 1.4 MB 的数据?
我不确定您使用的数据类型,但从您的问题来看,它似乎是 TEXT。
最大长度为 65,535 (216 − 1) 个字符的 TEXT 列。 如果值包含多字节,则有效最大长度更小 人物。每个 TEXT 值都使用 2 字节长度的前缀存储 表示值中的字节数。
可以为这种类型指定一个可选的长度 M。如果这样做, MySQL 将该列创建为足够大的最小 TEXT 类型 保存 M 个字符长的值。
如果您在谈论缓冲区大小,
这些程序变量中的大多数也可以在服务器启动时通过以下方式设置 使用与指定程序选项相同的语法。为了 例如,mysql 有一个 max_allowed_packet 变量来控制 其通信缓冲区的最大大小。设置 mysql 的 max_allowed_packet 变量的值为 16MB,请使用 以下命令:
shell> mysql --max_allowed_packet=16777216 shell> mysql --max_allowed_packet=16M 第一个命令以字节为单位指定值。第二个指定以兆字节为单位的值。对于变量 取一个数值,该值可以后缀为 K、M 或 G(大写或小写)表示1024的乘数, 10242 或 10243。(例如,当用于设置 max_allowed_packet 时, 后缀表示单位为千字节、兆字节或千兆字节。)
如果您使用 mysql 客户端程序,其默认的 max_allowed_packet 变量为 16MB。要设置更大的值,请像这样启动 mysql:
shell> mysql --max_allowed_packet=32M 这会将数据包大小设置为 32MB。
服务器的默认 max_allowed_packet 值为 1MB。如果服务器需要处理大查询(例如,如果您使用大 BLOB 列),您可以增加此值。例如,要将变量设置为 16MB,请像这样启动服务器:
shell> mysqld --max_allowed_packet=16M
参考https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html
【讨论】: