しすてむ さんぽみち。

適当なしすてむ紹介など。ようはくだらないBlog(´▽`)

phppgadmin との格闘

2006-01-06 23:40:32 | postgres
ツールってどうもつかいこなせません。

Windowsのツールもそうですけど
phpの出来合いのソースとか
簡単に入れられるっていうのだけれど
どっかでつまづくんですよねぇ (´Д⊂グスン


てなわけで 今回は postgres 8.1以前のデータを 8.1以降にリストア
してみたら なんだか 散々でしたよってかんじでした。

動かないことはないんですが、登録内容の 編集、削除なんかができないんですね
そんでなんでだ なんでだー って調べていたら バックアップ/リストア関連部分が
浮上いたしました。

あまりよくわかってはいないんですが、ここらへんがキーだよみたいな
部分を自分へのメモ書き程度にまとめ。


1.ヒントの入手
http://phppgadmin.sourceforge.net/?page=faqより
===========================
Q: When browsing a table, the 'edit' and 'delete' links do not appear.

A: In order, phpPgAdmin will prefer the following as unique row identifiers:

Primary keys
Unique keys (cannot be parital or expressional indexes)
OID column (will be slow to update, unless you index the OID column)

Furthermore, any NULL values in the unique index will mean that that row will be uneditable. Also, since OIDs can become duplicated in a table, phpPgAdmin will alter the row, and then check to ensure that exactly one row has been modified - otherwise rollback will occur.
===================
Q.の部分が今回のケースにどんぴしゃです!(・∀・)キタコレ!
Aの部分、英語がよくわからんのですが、プライマリやユニークキー OIDなカラムがあるとだめ?みたいなことをいっているようでした。


2.現場検証
次にリストア/バックアップまわりのことについて調べました。
バックアップデータを 8.1以前のDBにいれると問題ないのですが
8.1以降にいれると serial型の 型(わかりにく汗)がかわっていました

具体的にはこうです。(phppgadmin で確認しました。)

8.1以前
nextval('public.mag_ad_2tier_list_id_seq'::text)

8.1以降
nextval('mag_ad_2tier_list_id_seq'::regclass)


これで ふとおもったのが regclassってあやしいなってこってす・・


3.真相へ近づきつつ・・・
ってことで 単刀直入にグーグルさんにきいてみました

検索ワード:postgres regclass
んででてきたのが
PostgreSQL 8.0.4から8.1の変更点です。

こんなことがかいてありました。

====
currval('seq1') 等の引数'seq1'がtext型でなくregclass型(内部用OID)の表現として扱われるようになっています。
====

OID!


これどっかでみましたよ
1.のAにありました
OID column
こいつっぽい


ってことで 真相解明!!(´▽`)
は実はしてないんですが(汗 たぶん、regclassになってしまうのを 元のtextにしてしまえば うまくうごいてくれるんじゃないかな?的な。


けつがあれですね 適当ですいません 起承転結は大の苦手 。・゜・(ノД`)・゜・。 うえええん


(・∀・)ノ~~~~ グッバーイ!




最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。