[初回公開] 2010年03月08日
phpPgAdmin はブラウザ上でデータベース(postgreSQL)のデータ参照だけでなくテーブルの作成や構成変更ができる便利なツールだが、一部のテーブルにおいて登録しているレコード(データ)の編集・削除ができない場合の対応方法を紹介する。
このページの目次
1.phpPgAdmin とは
phpPgAdmin とは、データベース「PostgreSQL」をウェブブラウザで操作することができるツールである。
プログラム言語の PHP で構成されており、無料で利用することができる。
レンタルサーバなどホスティングでは管理画面からの簡単な操作で phpPgAdmin をインストールすぐに行うことが可能である。
データベースに保存しているデータを参照・編集できるため非常に便利である反面、インターネット上に公開しているのでハッキングにより情報漏洩やデータ改ざんに遭わないようにセキュリティ対策が必要である。
2.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 で実際に編集・削除が表示されているかテーブルを参照すると上図のように操作項目が表示されているのが確認できる。
関連記事
大学等向けの SSL 証明書「UPKI 証明書」の申請とサーバ設定方法
ブラウザとウェブサイト間の通信を暗号化するために https と呼ばれる通信方式が一般的に利用されており、その通信が問題無いことを示すために SSL 証明書が用いられているが民間が発行する証明書ではなく大…
jcode.pl でエラー「defined(%hash) is deprecated」の対応方法
CGI の Perl は最近ではあまり利用されなくなったプログラム言語だが、今でもウェブサイトやシステムでは稼働中のところがあるものの新しいサーバで動作させるとブラウザに「500 Internal Server Error」が表示…
Word や Excel を電子書籍ファイルフォーマットの EPUB へ変換する方法
書籍が電子化されてパソコンやスマートフォンで読むことができる時代になり、書籍を出版する側としても電子化されることで印刷と製本といったコストが大幅に削減できるメリットがある反面、電子書籍の仕組…