サンプル集 |
■VC ■C# ■Java ■BorlandC ■LinuxC ■MS-DOS ■bash ■Excel VBA ■VBScript ■PHP ■HTML ■perl ■iPhone ■Android ■Lua ■other |
Linuxコマンド |
用語集 |
debian メモ |
apache2 メモ |
MySQL メモ |
Oracle メモ |
HOME |
PostgreSQLでUPDATEを実行したところ「permission denied for relation」というエラーが出ました。
g01pre=> UPDATE MST_BRANCH set BRANCH_CODE = '0001';
ERROR: permission denied for relation mst_branch
ERROR: permission denied for relation mst_branch
◆環境
PostgreSQL | psql (9.6.6, サーバー 9.6.2) |
---|
更新しようとしたテーブルのオーナーとSQLを実行しているオーナーが違うとこのエラーが出るそうです。
それぞれ確認してみます。
SQLを実行しようとしているオーナーは、psqlで接続するときに指定したユーザー名だと思います。
psqlで接続したときのコマンド
psql -h rdst01 -U g01pre -d g01pre
psql -h rdst01 -U g01pre -d g01pre
ユーザーは-Uオプションで「g01pre」を指定しています。
続いて対象テーブルのオーナーを調べます。
g01pre=> \dt mst_branch
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
-----------+------------+----------+--------
g01pre | mst_branch | テーブル | g01
(1 行)
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
-----------+------------+----------+--------
g01pre | mst_branch | テーブル | g01
(1 行)
テーブルのオーナー(所有者)はg01でした。
テーブルのオーナーをg01preへ変更します。
g01pre=> alter table g01pre.mst_branch owner to g01pre;
もう一度同じSQLを実行したところ正常にUPDATEできました。
g01pre=> UPDATE MST_BRANCH set BRANCH_CODE = '0001';
UPDATE 29
UPDATE 29
Copyright (C) 2018 ymlib.com