[英]How truncate a table in MySQL that is using ManyToMany field
我在 MySQL 中有一個表,它有一個 ManyToMany 字段,我想截斷該表,但是當我嘗試它時,出現以下錯誤:
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint ...
我正在將 Symfony 與 Doctrine 一起使用,但如果可能的話,我有興趣學習如何通過控制台進行操作
class Project {
/**
* @ORM\ManyToMany(targetEntity="Shipping", mappedBy="projects")
**/
private $employee;
}
class Employee{
/**
* @ORM\ManyToMany(targetEntity="Product", inversedBy="employee")
* @ORM\JoinTable(name="middle_table")
**/
protected $projects;
}
外鍵意味着您有兩個表,並且每次更新都必須與外鍵約束所引用的表兼容。
可能的解決方案在這里: 如何正確截斷表?
SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checking.
TRUNCATE TABLE forums;
TRUNCATE TABLE dates;
TRUNCATE TABLE remarks;
SET FOREIGN_KEY_CHECKS = 1; -- Enable foreign key checking.
現在, middle_table 中的外鍵不允許您從 Projects 表中刪除記錄。 換句話說,您在 middle_table 中有一個指向 Project 的鏈接,它沒有機會從 Project 中刪除行。 因此,您應該更改外鍵的定義以允許刪除,您可以將鏈接設置為空或進行級聯刪除。 我更喜歡第二個選項,因此將注釋更改為跟隨,它應該允許您刪除 Projects 表中的行,它還將刪除到 middle_table 中的 Project 的鏈接。
class Project {
/**
* @ORM\ManyToMany(targetEntity="Shipping", mappedBy="projects", cascade={"remove"})
**/
private $employee;
}
文檔:
學說關聯映射
mysql 外鍵約束
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.