總覽
MySQL 遷移工作不會遷移使用者資料。因此,如果來源包含以 DEFINER 子句定義的中繼資料,在新 Cloud SQL 副本上叫用時就會失敗,因為該副本中還沒有這些使用者。
如要找出中繼資料中存在的 DEFINER 值,請在 MySQL 來源資料庫上執行下列查詢。檢查結果中是否有 root%localhost 的項目,或目的地執行個體中不存在的使用者:
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA NOT
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA NOT
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA NOT
IN ('mysql', 'sys');
SELECT DISTINCT DEFINER FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA NOT
IN ('mysql', 'sys');
如要從包含這類中繼資料的來源執行遷移工作,請採取下列其中一種做法:
在開始遷移工作前,請先在目的地 Cloud SQL 副本執行個體中建立使用者。
建立遷移工作,但不啟動。也就是選擇「建立」,而不是「建立並啟動」。
使用 Cloud SQL API 或 UI,在目的地 Cloud SQL 執行個體上建立來源 MySQL 執行個體的使用者。
從遷移工作清單或特定工作的頁面啟動遷移工作。
在設定遷移工作前,請先在來源 MySQL 執行個體中,將
DEFINER子句更新為INVOKER。