PostgreSQLについて
1投稿者:三河人  投稿日:2007/04/30(月)00:38:07
お勉強。
2投稿者:三河人  投稿日:2007/04/30(月)00:43:07
データベースの作成・削除は、webサーバ(XREA+)にある管理画面から
出来る事を確認したけど、実際のテーブル操作などはどうすれば
良いのか解りませんでした。
が、上記の管理画面内に「phpPgAdmin のインストール」という選択ボタンが
あったので「もしかしてコレが操作ツールなのかな…?」と予想し
調べて見ましたら…

「phpPgAdmin のインストール」
http://fumika.jp/nikki/2004/05/phppgadmin

当たってました(笑)
Webデータベースについては本当にド素人なので、ちまちまと
勉強していきたいと思います。
3投稿者:三河人  投稿日:2007/04/30(月)01:09:54
ちなみに、私が唯一購入したPHP本に少しだけ「PostgreSQL」の説明が
記載されていたのですが、その中では「telnet」からのテーブル操作しか
記載されていませんでした。

共有鯖クラスじゃ、telnet使えNEEEEE!!(笑)
4投稿者:三河人  投稿日:2007/04/30(月)01:39:26
参考文献。

「PostgreSQLの小部屋」
http://www.komonet.ne.jp/~psql/
5投稿者:三河人  投稿日:2007/05/01(火)02:13:04
参考文献。

PostgreSQL(ポストグレス・キュー・エル)についてよくある質問と
その解答(FAQ)
http://www.linet.gr.jp/~juk/plamo/parts/4.0/scripts/Custom/pgsql/FAQ_japanese.html

この中の記述を見ると、MySQLは小規模DB向けのようで、その範疇であれば
高速動作するようです。他には、機能面としてPostgreSQLよりも
少ないようです。
6投稿者:三河人  投稿日:2007/05/01(火)02:50:37
「phpPgAdmin」の操作メモ。

■テーブル作成画面
1)名前 … テーブルの名前を入力
2)フィールド数 … テーブル内のフィールド数を入力?
3)オプション(WITHOUT OIDS) … これが謎なので調査↓
CREATE TABLEでは,デフォルトではOIDが作成されます.OIDを生成しない
テーブルを作るには,キーワード "WITHOUT OIDS" を使用します.
 例: CREATE TABLE t1(i INTEGER) WITHOUT OIDS;
http://www.sraoss.co.jp/PostgreSQL/7.2/changes.html

OIDとはなんぞや?↓

オブジェクト識別子(OID)はPostgreSQLの内部で様々なシステムテーブルの
プライマリキーとして使用されます。また、テーブルの作成時にWITHOUT OIDS
が指定されていない場合やdefault_with_oids設定変数が偽に設定されている
場合を除き、OIDシステム列がユーザ作成のテーブルに追加されます。
http://www.postgresql.jp/document/pg800doc/html/datatype-oid.html
7投稿者:三河人  投稿日:2007/05/01(火)02:54:51
続き。
-----
oidデータ型は現在、符号無し4バイト整数として実装されています。
これは、大規模なデータベースの全体にわたって一意とするには十分では
ありません。
大規模な個別のテーブル内においても十分ではないかもしれません。
そのため、ユーザ作成テーブルのOID列をプライマリキーとして使用するのは
お勧めできません。
OIDの使用は、システムテーブルへの参照の場合にのみ推奨されます。
http://www.postgresql.jp/document/pg800doc/html/datatype-oid.html
-----
つまり、小規模DB内で識別する為に「OID」を使用しても良いという位の
意味ですか。
使わないのであれば、「WITHOUT OIDS」指定にする、と。
8投稿者:三河人  投稿日:2007/05/05(土)18:38:34
カンでphpPgAdminにてテーブル作成し、
カンでサンプルプログラムを設置してみたが、どうも上手く行きません。
一体ドコでエラーになってる・原因なのやら…。
恐らく、DB関連の処理が起因してるだろうと、まずはエラー箇所の特定。

・データベース接続命令(pg_connect)
 → 意外や、問題無し
・クエリーの実行(pg_exec)
 → ココでエラーが出てた

ちなみに、「pg_exec」ではなく「pg_query」が最近版PHPでは
主流らしいけど、どちらでも(land.to鯖では)動作したから良しとする。
9投稿者:三河人  投稿日:2007/05/05(土)18:43:38
んで、エラーの原因を調査。

データベース接続が成功している場合、「pg_last_error」関数を使うと
直近のエラーを返してくれるらしい。
出てきたエラー内容が↓
ERROR: invalid byte sequence for encoding "EUC_JP": 0x8e4f

「EUCコードじゃねえ!」っていう意味みたいです。
land.to鯖のPHPは「EUC」がデフォですが、ソレを強引に
「Shift-JIS」に私は設定変更して使ってたのですが、ソレが原因かな?

解決するか否かは不明ですが、参考文献。
http://shimax.cocolog-nifty.com/search/2005/06/invalid_byte_se_6658.html
10投稿者:三河人  投稿日:2007/05/05(土)19:13:10
うーん、出来ればやりたくなかった方法しかとりあえず思いつきませんでした。

対策前:PHPをShift-JISで作成→アップロード→NG
対策後:PHPをEUCで作成→アップロード→OK

詳しく調べてないけど、とにかくPostgreSQLはEUCしか受け付け無いっぽいので
スクリプト側もEUCにして、全体をEUCに統一。

EUC嫌いなんだけどなあ(苦笑)
PC(Windows)の世界で慣れ親しんでる、Shift-JISがやっぱり好きだし
今までもスクリプトは全部Shift-JISだったし…ゴニョゴニョ。
11投稿者:三河人  投稿日:2007/05/05(土)19:54:15
忘れないうちに、簡単におさらい。

■テーブル作成方法
1)phpPgAdminにて「テーブル作成」を選択
2)テーブル名(英数字)を入力
3)フィールド数を入力
4)次画面へ移り、各フィールド入力(英数字)

※フィールドの属性以外は、後からでも変更可能
※フィールドの追加・挿入・削除も可能

■PostgreSQLへの接続 → pg_connect命令
■SQL文の実行 → pg_exec 又は pg_query命令
投稿者 メール