我在将数据从一个表插入到另一个表时遇到问题,这是一个 MySQL 数据库。必须导入的表大约 4gb 大。我正在使用此查询导入数据。
insert into table1(column1, column 2)
select table2.column1, table2.column2
from table2 left join table1 on table2.column1 = table1.column1
where table1.column1 is null
我收到此错误:错误代码 1206:锁总数超过锁表大小。
增加缓冲池大小不是一个选项,我无权这样做。 SQL 查询适用于较小的表。
有人能解决我的问题吗?
解决方法:
insert IGNORE into table1(column1, column 2)
select table2.column1, table2.column2
from table2;
谢谢 Tom Melly 的回答。 感谢 Stefan Winkler 的帮助。
最佳答案
column1 是否有唯一索引?
如果是这样,您可以在插入中添加忽略选项,这意味着您可以跳过左连接:
insert IGNORE into table1(column1, column 2)
select table2.column1, table2.column2
from table2;
这将跳过任何会造成键冲突的插入,但查询仍会运行(如果没有“忽略”,它将在第一次键冲突时失败)。
关于mysql - 在SQL错误1206中插入一个巨大的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20375710/