field_collection_item
我有 2 个数据库,表中缺少约 100,000 行db1
,我想通过从 导出来修复db2
。
我的计划是:
item_id
通过in识别缺失的项目db2
,导出item_id
s 的列表。- 将
item_id
s 导入db1
到新表中missing_field_collection_item
使用以下 mysqldump 拉取数据:
mysqldump -u USER -pPASS DATABASE --no-create-info --tables field_collection_item --where="item_id IN (SELECT item_id FROM missing_field_collection_item);"
然而这给出了错误:
Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `field_collection_item` WHERE item_id IN (SELECT item_id FROM missing_field_collection_item);': Table 'missing_field_collection_item' was not locked with LOCK TABLES (1100)
我宁愿在不进行更改的情况下执行此操作,db2
但这并不是绝对必要的,如果事实证明这样做的唯一现实方法是删除我不想要的行,然后在没有 where 子句的情况下转储。
更新
我发现上面的工作只是通过添加--single-transaction
,这似乎关闭了锁定。这应该是安全的,因为db2
它不是实时的,但是我不确定我是否理解任何副作用,所以我不会在没有第二意见的情况下接受这个作为答案。