Open1

mysqlでviewのdefinerを変更する方法

daikidaiki

例えばRDS上に存在するDBからviewをエクスポートして、ローカルで再現する場合にRDSでのユーザ名とローカルDBでのユーザ名が違う場合に遭遇するエラーがある

General error: 1449 The user specified as a definer ('username'@'%') does not exist

解決策は

  1. エクスポートしたファイルを直接vimなどで編集してdefinerを消す
  2. MySQL操作でdefinerを変更する
    2-1. viewを削除
    drop view view_name;
    2-2. viewを再作成
CREATE DEFINER = 'new_user_name'@'host(ここにはホスト名が入る)' VIEW view_name AS
select ... from ... (ここにはviewの定義が入る)