Open1
mysqlでviewのdefinerを変更する方法
例えばRDS上に存在するDBからviewをエクスポートして、ローカルで再現する場合にRDSでのユーザ名とローカルDBでのユーザ名が違う場合に遭遇するエラーがある
General error: 1449 The user specified as a definer ('username'@'%') does not exist
解決策は
- エクスポートしたファイルを直接vimなどで編集してdefinerを消す
- 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の定義が入る)