将数据从源DB1表更新到另一个目标DB2表不起作用

时间:2014-12-30 12:13:31

标签: mysql database

我有2个数据库,即DB1DB2。两个数据库都有一个名为MyTable的表 虽然MyTable中的DB1已过时,但MyTable中的DB2有新值。我希望使用MyTable DB1更新MyTable中的DB2

MySql版本5.1.61-0ubuntu0.11.10.1 (Ubuntu)

我试过这样(从DB1内部)

update MyTable a, DB2.MyTable b set a.name=b.name where a.id=b.id;

但这导致了

ERROR 1206 (HY000): The total number of locks exceeds the lock table size

提到错误我在innodb_buffer_pool_size=64MB文件中将缓冲区大小增加到64MB my.conf并重新启动了mysql服务,但仍显示相同的错误。

有谁能告诉我我哪里出错了?

2 个答案:

答案 0 :(得分:0)

UPDATE DB1.dbo.MyTable AS dest JOIN DB2.dbo.MyTable AS src ON dest.id=src.id
    SET dest.name=src.name;

答案 1 :(得分:0)

正如AeroX所注意到的,我的问题被引用了一个不同的标签。

由于我的MySql版本(5.1.x)和数据库引擎而出现问题。

最后,我通过引用herehere找到了我的问题的解决方案。

他们建议可以通过

解决
  1. 调整innodb_buffer_pool_size并重启MySQL。

               or
    
  2. 减少您在一个查询中操作的行数。
  3. 这个错误的原因是 “SQL语句对其扫描的所有记录设置锁定。如果你有一个小的缓冲池,那么InnoDB锁表可能确实变得如此之大,以至于它不适合缓冲池。 “

    完全相同的查询在MySQL 5.6.x版中运行。