轉載自東華果汁哥 Apache DophinScheduler 運行一段時間後,實例調度日誌越來越多,需要定期清理。 SQL 錯誤 [1701] [42000]: Cannot truncate a table referenced in a foreign key constraint (`dol ...
轉載自東華果汁哥
Apache DophinScheduler 運行一段時間後,實例調度日誌越來越多,需要定期清理。
SQL 錯誤 [1701] [42000]: Cannot truncate a table referenced in a foreign key constraint (`dolphinscheduler`.`t_ds_task_instance`, CONSTRAINT `foreign_key_instance_id`) 如何刪除dophinscheduler 實例日誌
SQL 錯誤 [1701] [42000] 表示嘗試截斷(刪除所有行)一個表,該表在其他表的外鍵約束中被引用。在這種情況下,dolphinscheduler.t_ds_task_instance
表被 foreign_key_instance_id
外鍵約束引用。
為瞭解決這個問題,您可以按照以下步驟操作:
1. 刪除外鍵約束:
在刪除表的數據之前,您需要刪除或禁用引用該表的外鍵約束。這樣可以確保資料庫的完整性不受影響。
例如,您可以使用以下 SQL 語句來刪除外鍵約束(請根據您的資料庫系統調整語法):
ALTER TABLE referencing_table DROP FOREIGN KEY foreign_key_instance_id;
其中 referencing_table
是引用 t_ds_task_instance
的表名。
2. 截斷表:
刪除外鍵約束後,您現在可以截斷表。
TRUNCATE TABLE dolphinscheduler.t_ds_task_instance;
3. 重新添加外鍵約束:
截斷表後,如果您需要,可以重新添加外鍵約束。
ALTER TABLE referencing_table ADD CONSTRAINT foreign_key_instance_id FOREIGN KEY (instance_id) REFERENCES t_ds_task_instance(id);
請註意,在執行這些操作之前,請確保您有足夠的許可權,並且瞭解這些操作對您的資料庫的影響。在生產環境中操作之前,建議備份資料庫。
另外,如果您使用的是像 MySQL 這樣的資料庫,您也可以考慮使用 SET FOREIGN_KEY_CHECKS = 0
; 來臨時禁用外鍵約束,然後執行截斷操作,之後再重新啟用外鍵約束:
最終解決方案
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE dolphinscheduler.t_ds_task_instance;
SET FOREIGN_KEY_CHECKS = 1;
但請註意,這種方法會暫時違反資料庫的完整性,因此請謹慎使用。社區建議通過 open api的方式安全地刪除工作流實例和任務實例,open api可以刪除任務實例的運行日誌。
原文鏈接:https://blog.csdn.net/u013421629/article/details/136932478
本文由 白鯨開源 提供發佈支持!