2004年03月15日
PostgreSQLでシーケンス
- kenji
- 13:04
- コメント (3)
- トラックバックする
- カテゴリー:PostgreSQL
本にシーケンスのことが載ってなかったので無いと思ったけど試しにグーグル先生に聞いてみるとどうやらあるらしい。まぁ普通はあるか、無いとめんどくさいし。
カウンターはシーケンスで作成してみる。
rainbowdb=# create sequence externalstoragetop cache 5 start 1;
CREATE SEQUENCE
作れたっぽい。
シーケンス使ってみる。
rainbowdb=# select nextval ('externalstoragetop');
nextval
---------
1
(1 row)
rainbowdb=# select nextval ('externalstoragetop');
nextval
---------
2
(1 row)
お、いい感じ。
と思ったけどCGIから使うとなぜか5ずつ増える・・・。
キャッシュに5を設定したからそれと関係が?と思ったら
---- 以下http://www.net-newbie.com/postgres/man/manl/create_sequence.l.htmlからの引用
cache オプションは連続番号が先にアロケートされてメモリに保存されて、高速アクセスが可能となります。最小値は 1 (つまりキャッシュしません)で、これがデフォルトとなります。 注意: 各バックエンドはそれぞれにアロケートした数をキャッシュします。現在のセッションでキャッシュされても使われなかった数は捨てられます。
---- ここまで
あらら。コレが原因かな。仕方なくキャッシュは無しで作成する。
シーケンス削除
DROP SEQUENCE externalstoragetop ;
入力してて気が付いたけどpsql上でTab押すとコマンド名オブジェクト名を補完してくれる。すげー便利だ。
オプション無しで作成
create sequence externalstoragetop;
今度はCGI上からでも無事動いた。
リロードするたびに素直にカウントアップするけどIP覚えるのとかめんどくさそうだし数は増えた方がいいからコレでイイかw
と言うことでTOPに追加。
Movable Typeの中に組み込もうかと思ったけどなかなか簡単にはいかない様子。MTタグを自分で作ればできるのか??
SSIにしようかと思ったけどCGIの出力をSSIに渡す事はできるのだろうか。不明。
と言うことで手軽にできるインナーフレームでカウンタCGIを呼び出すことに。
うう・・ダセェ・・・でも仕方ねぇ・・。
リロードすると素直にカウントアップするのでTOPページのページビューと言うことにしてみる。
リロードするとカウンタだけ一瞬遅れて表示されるのはつらい。
試しにPostgreSQL落としてページ開いてみる。
ふむ、インナーフレームの呼び出しに失敗するのかフレームの中は何も表示されない。
まぁこれはコレでイイかな。
PerlからPostgreSQL
- kenji
- 12:48
- コメント (3)
- トラックバックする
- カテゴリー:Linux |
- カテゴリー:PostgreSQL
ブログにカウンターを付けよう、そして入れてみたポスグレを使ってみようと言うことでPerlからDBにアクセスするにはDBIが必要らしい。
use DBI;するとここでエラーなので入ってないようだ。
調べてみるといろいろややこしそうだったがこれまたyumで簡単に入れることができるようだ。
yum listで
perl-DBD-Pg i386 1.22-1 base
perl-DBI i386 1.37-1 base
の項目を発見。たぶんコレを入れればいけるはず。
両方入れるとuse DBI;でエラー出ず。
しかしログインのところでエラー。
pg_hba.conf を編集する。
local all all trust
の行のコメントアウトを解除する。
するといけたっぽい。