如果我在MySQL查询中添加;
,那么这个数量是否会计入max_allowed_packet
长度?添加空格怎么样?这算不算吗?如果不存在,MySQL会自动添加;
吗?
即
就max_allowed_packet
长度而言,以下是相同的?:
INSERT INTO table_name (col_name) VALUES ( 1 ) , ( 2 );
INSERT INTO table_name (col_name) VALUES (1),(2)
如果它们是相同的,我怎样才能以编程方式知道MySQL认为该查询有多长?
答案 0 :(得分:0)
max_allowed_packet 指定在服务器接收并预处理之后要执行的SQL语句的最大长度;例如,包括创建插入值列表(如果有的话)。所以,到那个时候,没有尾随空格和那种东西。我不确定“;”,但我最好的猜测是,如果它不存在,它会在预处理你的陈述时添加。
答案 1 :(得分:0)
不,空白与max_allowed_packet
无关,这是一个服务器变量。
正如您可以检查机器上的MySQL客户端将收到的字符串转换为正确的数据类型,这样做可以消除额外的无关紧要的空白,MySQL连接器也是如此。
这意味着两个查询都被视为相同的
所以你应该只关心SQL查询的可读性并忘记空格。
检查
使用WIRESHARK捕获mysql数据包。
如果对深潜有兴趣的话。浏览您正在使用的MySQL客户端或MySQL连接器的源代码。