現象:使用 mysqldump 導出含觸發器的庫,導入時拋錯:ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'。
mysqldump 默認 --triggers=TRUE,導出時包含觸發器定義。
mysqldump --triggers=false -u root -p database > dump.sql
後續手動在目標庫重建觸發器(按新版本語法合併邏輯)。
5.7.2+ 支援同表同事件多觸發器,按創建順序執行。
-- 查看現有觸發器
SHOW TRIGGERS;
-- 手動刪除多餘,合併邏輯為單個觸發器
DROP TRIGGER IF EXISTS trg_old1;
DROP TRIGGER IF EXISTS trg_old2;
CREATE TRIGGER trg_merged BEFORE INSERT ON t FOR EACH ROW BEGIN ... END;
| 參數 | 默認值 | 作用 |
|---|---|---|
| --triggers | TRUE | 導出觸發器 |
| --routines | FALSE | 導出存儲過程/函數 |
| --events | FALSE | 導出事件調度器 |
| --single-transaction | FALSE | InnoDB 熱備份 (需配合 --master-data) |
| --master-data=2 | 0 | 輸出 CHANGE MASTER TO 註釋,含 binlog 位點 |
--triggers=false --routines=true --events=true,避免默認值變更影響。