phpmyadmin替换表

时间:2017-05-15 22:05:02

标签: php mysql phpmyadmin

我可以通过phpmyadmin替换DB中的表吗?表有两个外键,我可以通过禁用外键检查(或完全删除它)来截断它,但是当我尝试重新加载它时,如果我不启用外键检查它不会连接到它应该表(我不能点击外国ID,通常它会带我到相关表)。如果我启用了外键检查,则会出现错误

#1452 - Cannot add or update a child row: a foreign key constraint fails

有没有办法通过保持关系活着来以某种方式用过去的同一个表替换表?

2 个答案:

答案 0 :(得分:0)

我认为该表包含数据...在删除表之前尝试清除表。

答案 1 :(得分:0)

  

实际上“您不需要禁用外键检查”,如果您只想删除(或截断)存储子记录的表。您应该能够删除所有并稍后重新插入它们。请这样试试。

     

如果要使用主键截断表而不删除子记录,则需要禁用外键检查。 (但这不合理。)

     

按顺序执行以下步骤可以正常工作而不会禁用任何约束。如果您不遵守订单,它将失败。您可以跳过步骤2和3,仅使用1和4。

     
      
  1. 使用指向主键的外键删除所有子记录。

  2.   
  3. 使用主键删除所有主记录。

  4.   
  5. 使用主键重新插入所有主记录。

  6.   
  7. 使用指向主键的外键重新插入所有子记录。

  8.   

无论如何,你听到的错误听起来就像你试图插入旧数据一样,外键指向的主表中缺少匹配的记录。

您可以查看:

  1. 主表中的数据(具有外键所指向的主键的表)是否也被删除或截断。如果是这样,您需要在儿童记录之前将它们带回来。
  2. 主表中的数据是否不再相同,旧数据的一致性会丢失。 (如果您正在处理生产数据库,则数据可能正在更改)。如果是这样,您需要将丢失的记录带回主表。