phpPgAdmin でレコードの編集・削除できない場合の対応方法


[初回公開] 2010年03月08日

phpPgAdmin はブラウザ上でデータベース(postgreSQL)のデータ参照だけでなくテーブルの作成や構成変更ができる便利なツールだが、一部のテーブルにおいて登録しているレコード(データ)の編集・削除ができない場合の対応方法を紹介する。

phpPgAdmin でレコードの編集・削除できない場合の対応方法

1.phpPgAdmin とは

phpPgAdmin とは、データベース「PostgreSQL」をウェブブラウザで操作することができるツールである。
プログラム言語の PHP で構成されており、無料で利用することができる。



レンタルサーバなどホスティングでは管理画面からの簡単な操作で phpPgAdmin をインストールすぐに行うことが可能である。
データベースに保存しているデータを参照・編集できるため非常に便利である反面、インターネット上に公開しているのでハッキングにより情報漏洩やデータ改ざんに遭わないようにセキュリティ対策が必要である。

2.phpPgAdmin で編集・削除ができない場合の影響

phpPgAdmin で編集・削除ができない場合の影響としては、データベースに保存しているデータの書き換えが行えなくなるが、参照はできるので状況確認程度の保守運用であれば可能である。

データベースを使ったウェブアプリーションを開発する場合はデータが正常に挿入されたかや、挿入したデータを変更・削除した場合の画面の挙動を動作試験やデバッグとして利用している場合は開発の効率が悪くなる。

phpPgAdmin で編集・削除ボタンが出ない様子は下図のように編集するためのリンクやボタンが各行に表示されなくなる。

phpPgAdmin で編集・削除ボタンが出ない様子

3.phpPgAdmin で編集・削除ができない場合の原因と対応方法

phpPgAdmin で編集・削除ができない場合の原因と対応方法としては、「データベースへの操作権限の確認」と「ユニークキーの設定確認」の 2 つが挙げられ、それぞれ次の通りである。

3-1.データベースに接続するユーザに操作権限が無い場合

データベースに接続するユーザに操作権限が無い場合とは、postgreSQL を始め、MySQL や Oracle などデータベースのデータを参照・操作するためのデータベース用のユーザに編集権限が無いことが考えられる。

データベースに接続する際に利用するユーザには操作権限が存在しており、重要なデータを取り扱うデータベースでは操作ミスで違うデータに上書きされたり、削除されないように、参照のみ可能にするなど操作を制限することができる。

そのため、編集・削除のボタンが表示されない場合は phpPgAdmin から postgreSQL に接続するデータベースユーザの権限を確認する必要がある。

もし操作権限がなければ、下記のように GRANT コマンドで権限を付与することで phpPgAdmin から編集・削除が可能になる。

GRANT INSERT, UPDATE, DELETE ON {操作対象のテーブル名} TO {ユーザ名};


3-2.テーブルにユニークキーの設定が無い場合

テーブルにユニークキーの設定が無い場合とは、postgreSQL を始めデータベースのテーブルにはユニークキーもしくはプライマリーキーと呼ばれる各テーブルで唯一のデータしか入らない(言い換えると同じデータが入らない)設定が入っていないことを指す。

例えば「担当者名,性別」といったデータ構造の場合、ユニークキーが無いと「A,男性」が複数登録することができてしまう。
そこで同姓同名を許可しないようにするためには「担当者名」のカラムにユニークキーの設定を入れるとAは複数登録できなくなる。

このようにユニークキーが無いテーブルだと phpPgAdmin がデータを編集・削除しようした時に、同じレコードがあるとどのデータを編集すればよいか判断がつかない、もしくは複数データ全てを一括して編集・削除してしまう恐れがあるため編集・削除ボタンが表示されないようになっている。

もし phpPgAdmin でレコードを編集・削除したいのであればテーブルにユニークキーを設定する必要があり、次のように phpPgAdmin の画面から行うことができる。

まず最初に設定変更したいテーブルを開き、メニュー内の「構造 -> 検査制約」をクリックする。

テーブル設定を表示した様子


「構造 -> 検査制約」をクリックすると上図のような画面が表示され、ユニークキー設定したいカラムの右側にある項目「インデックス」から「PRIMARY」を選択する。

「PRIMARY」を選択した後はボタン「保存する」をクリックすると設定が反映される。

phpPgAdmin で編集・削除が表示されることを確認する

ユニークキーの設定後は phpPgAdmin で実際に編集・削除が表示されているかテーブルを参照すると上図のように操作項目が表示されているのが確認できる。

関連記事

コメントを残す