Luk*_*man 88
如果您INSERT ... SELECT
在其他表中拥有这些记录或部分记录,则可以使用模式插入无限大量的记录.
但是如果你使用INSERT ... VALUES
模式对值进行硬编码,则对语句的大小/长度有一个限制:max_allowed_packet限制客户端发送到数据库服务器的SQL语句的长度,它会影响任何类型的查询而且不仅仅是INSERT语句.
Raj*_*ula 37
理想情况下,Mysql允许在单个插入(一次)中创建无限数量的行,但是当a
MySQL客户端或mysqld服务器接收的数据包大于max_allowed_packet字节,它会发出数据包太大的错误并关闭连接.
要查看max_allowed_packet变量的默认值,请在MySQL中执行以下命令:
show variables like 'max_allowed_packet';
标准MySQL安装的默认值为1048576字节(1MB).可以通过将其设置为会话或连接的更高值来增加此值.
这为每个人设置了500MB的值(这就是GLOBAL的含义):
SET GLOBAL max_allowed_packet=524288000;
使用新连接检查新终端的更改:
show variables like 'max_allowed_packet';
现在它应该没有任何错误插入无限记录.谢谢
bro*_*man 10
您将达到 max_allowed_packet 限制并且
错误:1390 准备好的语句包含太多占位符。
您可以在一个sql中放置65535个占位符。因此,如果您在一行中有两列,则可以在一个sql中插入32767行。
在 MySQL 中导入 50K+ 记录给出一般错误:1390 Prepared statement contains too many placeholders
参考http://forums.mysql.com/read.php?20,161869,它与你的mysql的配置有关:max_allowed_packet
,bulk_insert_buffer_size
,key_buffer_size
.
您可以使用一个INSERT语句插入无限数量的行.例如,您可以执行一个存储过程,该存储过程执行一次循环,每次运行INSERT查询.
或者你的INSERT可以触发一个自己执行INSERT的触发器.哪个跳过另一个触发器 等等.
不,它不依赖于值集的数量.它也不依赖于字节数.
括号的嵌套程度有限,限制了总括号的长度.具有讽刺意味的是,这两个都在thedailywtf.com上引用.但是,我上面提到的两种方法都能绕过这些限制.
归档时间: |
|
查看次数: |
84020 次 |
最近记录: |