我想插入一个包含1,397,025个字符的查询,但不会插入它。服务器不会向我提供错误消息。所以我的想法是,查询是否有字符限制?
答案 0 :(得分:0)
我不确定您使用的数据类型,但从您的问题看来它似乎是TEXT。
TEXT列,最大长度为65,535(216 - 1)个字符。 如果值包含多字节,则有效最大长度较小 字符。每个TEXT值使用2字节长度前缀存储 表示值中的字节数。
此类型可以选择长度M.如果这样做, MySQL将列创建为足够大的最小TEXT类型 保持M个字符的长度。
如果你在谈论缓冲区大小,
这些程序变量中的大多数也可以在服务器启动时设置 使用与指定程序选项相同的语法。对于 例如,mysql有一个max_allowed_packet变量来控制 通信缓冲区的最大大小。设置 mysql的max_allowed_packet变量值为16MB,使用其中之一 以下命令:
壳> 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,如下所示:
壳> mysql --max_allowed_packet = 32M 这将数据包大小设置为32MB。
服务器的默认max_allowed_packet值为1MB。如果服务器需要处理大型查询(例如,如果您正在处理大型BLOB列),则可以增加此值。例如,要将变量设置为16MB,请按以下方式启动服务器:
壳> mysqld --max_allowed_packet = 16M
参考https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html