MySQL查询中是否存在charater限制?

时间:2015-12-06 19:01:49

标签: mysql database

我想插入一个包含1,397,025个字符的查询,但不会插入它。服务器不会向我提供错误消息。所以我的想法是,查询是否有字符限制?

1 个答案:

答案 0 :(得分:0)

我不确定您使用的数据类型,但从您的问题看来它似乎是TEXT。

来自Mysql Doc

  

TEXT列,最大长度为65,535(216 - 1)个字符。   如果值包含多字节,则有效最大长度较小   字符。每个TEXT值使用2字节长度前缀存储   表示值中的字节数。

     

此类型可以选择长度M.如果这样做,   MySQL将列创建为足够大的最小TEXT类型   保持M个字符的长度。

如果你在谈论缓冲区大小,

  

这些程序变量中的大多数也可以在服务器启动时设置   使用与指定程序选项相同的语法。对于   例如,mysql有一个max_allowed_pa​​cket变量来控制   通信缓冲区的最大大小。设置   mysql的max_allowed_pa​​cket变量值为16MB,使用其中之一   以下命令:

     

壳> mysql --max_allowed_pa​​cket = 16777216 shell> MySQL的   --max_allowed_pa​​cket = 16M第一个命令指定以字节为单位的值。第二个指定以兆字节为单位的值。对于那些变量   取一个数值,该值可以用后缀K,M或者给出   G(大写或小写)表示乘数为1024,   10242或10243.(例如,当用于设置max_allowed_pa​​cket时,   后缀表示千字节,兆字节或千兆字节的单位。)

如果您使用的是mysql客户端程序,则其默认的max_allowed_pa​​cket变量为16MB。要设置更大的值,请启动mysql,如下所示:

壳> mysql --max_allowed_pa​​cket = 32M 这将数据包大小设置为32MB。

服务器的默认max_allowed_pa​​cket值为1MB。如果服务器需要处理大型查询(例如,如果您正在处理大型BLOB列),则可以增加此值。例如,要将变量设置为16MB,请按以下方式启动服务器:

壳> mysqld --max_allowed_pa​​cket = 16M

参考https://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html