【发布时间】:2018-05-30 03:37:48
【问题描述】:
我正在开发一个针对 MySQL 数据库生成和运行 SQL 的工具。我正在尝试添加基于用户指定设置限制插入语句大小的功能。我找到了一些关于 max_allowed_packet 设置的信息,但我没有找到任何解释如何计算数据包大小的信息。 MySQL 文档说“通信数据包是发送到 MySQL 服务器的单个 SQL 语句”,但我不明白 SQL 语句的大小是如何确定的。
我正在将一条 SQL 语句和一些参数传递给我的驱动程序:
cmd.CommandText= "INSERT INTO myTable VALUES(@int, @date, @text)";
cmd.Parameters.AddWithValue("@int", 1);
cmd.Parameters.AddWithValue("@date", DateTime.Now);
cmd.Parameters.AddWithValue("@text", "how big is this???");
cmd.ExecuteNonQuery();
数据包的大小只是所有变量和SQL语句的字符串表示中使用的字节的总和吗?或者我应该根据它们在数据库中占用的空间来计算每个参数的大小,并将其与 SQL 字符串中使用的字节相加?或者是其他东西?我不太确定数据库驱动程序是如何工作的,所以如果你对它们有所了解的话,也许一些相关的上下文会有所帮助。
【问题讨论】:
-
出于好奇,为什么要限制插入语句的大小?
-
我已经多次遇到 max_packet_allowed 限制,我不想仅仅针对应用程序中的某些边缘情况更改该设置。
标签: mysql database-connection max-allowed-packet