【Windows】 PostgreSQL8 Part.1 【対応】

このエントリーをはてなブックマークに追加
1NAME IS NULL
2NAME IS NULL:04/12/05 21:02:07 ID:???
2
3NAME IS NULL:04/12/05 21:06:44 ID:???
RC1試した人まだ〜?(・∀・)チンコチンコ
4NAME IS NULL:04/12/07 07:23:21 ID:40Yk3Ss7
(・∀・)?
5NAME IS NULL:04/12/14 10:27:58 ID:???
>>3
昨晩セットアップしました。

まだ使い方がよくわからない _| ̄|○
6NAME IS NULL:04/12/14 21:23:21 ID:???
>>5
どこらへんが?
7NAME IS NULL:04/12/14 22:06:21 ID:+OauwUy9
ageて見よう(・∀・)
8NAME IS NULL:04/12/15 00:13:36 ID:???
MsAccessからデータビューを見ようとした場合
データーベースにunique indexが設定してあると
unix版8では正常に見れてもWindows版だと一部
データが#Deletedと化ける。
相変わらず糞だな。
9NAME IS NULL:04/12/15 00:38:21 ID:???
8は相変わらず糞、と・・・・メモメモ
10NAME IS NULL:04/12/15 16:28:21 ID:???
UNIX版がOKになったというのは、うれしい。
11NAME IS NULL:04/12/15 22:36:11 ID:???
あんまり盛り上がらないね・・・
日本のユーザー会のリリース情報にまだ紹介されてないってのもあんのかな?
12NAME IS NULL:04/12/16 06:09:36 ID:???
まぁ、Win対応以外は表向き何が変わったというわけじゃないから、2chのスレで盛り上がるようなネタはないんじゃないの?
いまどき使い方がわからないってのも>>5くらいのものだろうし。
13NAME IS NULL:04/12/16 08:15:00 ID:???
最近MySQLばかり使っているのでPostgreSQLの情報を追い切れていないんですが。

>>12
> まぁ、Win対応以外は表向き何が変わったというわけじゃないから、

え?アーカイブログとかPoint In Time Recoveryとかは現行バージョンでも
使えるの?
ここら辺の機能がすごく魅力的なのと、MySQL4.1.7の文字コード関連の
仕様改悪に嫌気がさしたので、version 8を待ってPostgreSQLに鞍替えしよう
かと思ってたんですが・・・

14NAME IS NULL:04/12/16 09:28:33 ID:???
そういうのは裏向きで。
15NAME IS NULL:04/12/16 10:06:16 ID:???
>>14
そ、そうなのかw
16NAME IS NULL:04/12/16 13:09:38 ID:???
>>15
だって、アーカイブログとかリカバリーとか、RC1の段階で「いいよー」って話題が盛り上がるもんじゃないでしょ。
17NAME IS NULL:04/12/16 22:39:32 ID:???
PITRってやっちゃいけないクエリーを発行したときも
旅に出なくてよさそうで、漏れも楽しみにしてる。
18NAME IS NULL:04/12/18 01:29:03 ID:???
あのさ、みんなVer.7で結構満足していると思うぞ。
というか、8になって何が変わったんだ?
19NAME IS NULL:04/12/18 01:39:30 ID:???
トランザクションのネスティングが出来るっていう話があった気がするんだけど、
お流れになったのかなぁ?
20NAME IS NULL:04/12/20 02:14:01 ID:???
>>18
まず、上にも挙がってる Point In Time Recovery (PITR)。
あと Table Space の概念が追加された。

他には Save Point も追加された。
>>19が言ってるトランザクションのネスティングのことね。

機能面ではこんなもんかな?
あとパフォーマンスもあちこちで向上している。
2119:04/12/20 02:35:24 ID:???
>>20
トランザクションのネスティング = SavePoint なの?

俺が期待したのは、
BEGIN;
 SQL文
 BEGIN;
  SQL文
 COMMIT;
COMMIT;
のような感じで動くやつ。

関数内でロックしながらINSERTやUPDATEしたくなる時ってありませんか?
こんな考え方、なんか拙い?
22NAME IS NULL:04/12/21 16:42:37 ID:???
BEGIN;
 SQL文
 SAVEPOINT name;
  SQL文
 RELEASE SAVEPOINT name;
COMMIT;

って感じかな。

> 関数内でロックしながらINSERTやUPDATEしたくなる時ってありませんか?

の意味するところがよく分からない。
23NAME IS NULL:04/12/22 15:22:52 ID:???
いつの間にかRC2があるね。
2419:04/12/22 15:38:20 ID:???
>>22
> 関数内でロックしながらINSERTやUPDATEしたくなる時ってありませんか?

一度に2つのテーブルを更新するなど、一連の処理を一つのSQL関数で済ませたい場合、
SQL関数内で一つのトランザクションを確保したい。みたいな...
もちろん、関数を呼び出す前にbeginしておけば済む程度の話なんだけど...
25NAME IS NULL:04/12/22 21:14:14 ID:???
リニューアルしたのか。
知らなくてびびった。
26NAME IS NULL:04/12/23 12:44:06 ID:???
>>21
> 俺が期待したのは、
> BEGIN;
>  SQL文
>  BEGIN;
>   SQL文
>  COMMIT;
> COMMIT;
> のような感じで動くやつ。

例えば、
BEGIN;
 SQL文(1)
 BEGIN;
  SQL文(2)
 COMMIT;
 SQL文(3)
ROLLBACK;
となったときに、SQL文(1),(2),(3)を全てROLLBACKさせたいのなら
SAVEPOINTを使って>>22のように書けばいい。

そうじゃなく、SQL文(1),(3)だけをROLLBACKさせたいというのなら
それはもはや「Nested Transaction」とは言わん。
27NAME IS NULL:05/01/13 09:58:49 ID:???
7 で満足している人は互換性のある 8 にして、
パフォーマンス向上に驚くがいいさ。
28NAME IS NULL:05/01/13 12:55:01 ID:???
windows版相変わらずダメダメだな
29NAME IS NULL:05/01/13 15:00:38 ID:???
といいたいだけにみえる
30NAME IS NULL:05/01/13 20:18:09 ID:???
8を賞賛する奴は
まともに使いこなしてない奴だよ
31NAME IS NULL:05/01/14 00:34:24 ID:???
正式版がでていない時点での>>30のような意見って、単にRCに過剰な期待してるだけに見える。
32NAME IS NULL:05/01/14 00:43:19 ID:???
まともな品質すら達成できないなんて
33NAME IS NULL:05/01/14 02:23:24 ID:???
楽しそうだな。
34NAME IS NULL:05/01/19 17:54:18 ID:eDyiMXvw
リリースされたみたいだが。
35NAME IS NULL:05/01/20 00:52:44 ID:???
>>30
じゃあ、具体的に批判しまくってください。
36NAME IS NULL:05/01/20 12:30:04 ID:???
あいかわらず、unsigned intは使えないのね

(´・ω・`)
37NAME IS NULL:05/01/20 13:11:33 ID:8OD/vHuZ
windows板にreadmeに
postgresql-8.0-ja.zip is a Japanese specific version.
って、書いてあるがどこにあるのかわからない
38NAME IS NULL:05/01/20 14:00:34 ID:???
Win2kに入れてみました。
サンデープログラマには勿体無いDBMSですが、適当にDB、テーブルを
作って試してみたところ、アドミンツール内でですが、漢字、半角カナも
表示出来るんで、ちょっと感動しました。
SJISはなんかダメみたい。
39NAME IS NULL:05/01/20 15:53:19 ID:hF6eZA3A
>>38
> 漢字、半角カナも表示出来るんで、ちょっと感動しました。
おー、それはすごい

ところで、セットアップ時に 文字コードは何を指定すればいいのですか?
40NAME IS NULL:05/01/20 16:46:30 ID:???
インスコして、ローカルからはアドミンツールつながるけど
他のマシーンから、アドミンツールがつながらない
出来た人いる?
41NAME IS NULL:05/01/20 17:31:29 ID:???
文字コードは
EUC_JPにしてみた
42NAME IS NULL:05/01/20 18:03:58 ID:???
>>40
適切に設定したらできた。gomen
4338:05/01/20 21:36:13 ID:???
>>39
ごめん、セットアップ時の何にしたか忘れたけど、多分SJISだったかな?
新規DB作る時に、エンコード方法を選べるから、気にしないでもいいと思う。

あれから、VB6+ADOでテストしてみたら、これまた簡単。
DSNのサーバ名を、localhostじゃなくてコンピュータ名を入れていたので、
接続出来るまで時間がかかったけど、つながってしまえば後は簡単でした。
後、新規DBを作るときに文字エンコードをUnicodeでもEUC-JPでも、
漢字・半角カナの表示出来ました。
ドライバの日本語パッチの斎藤さんありがとうございます。

プログラミングなんて数年ぶりなんで、なんか楽しい。後はチラシの裏に書きます。

44NAME IS NULL:05/01/20 22:16:02 ID:???
最初の接続設定がツールでできないのは、使いやすさを考えるとちょっと問題だね。
45NAME IS NULL:05/01/21 01:03:48 ID:???
DB作るときにEUC-JPでもちゃんと半角かなやUNICODEのマッピング問題含めてきれいにとおる
というかSJIS系は通ってるように見えて実はいまだに関数群がとかありそうで怖いからWinでもつかわん

Postgresの日本語周りはかなり昔に通ってきた道で、比較的安定してるのがいいな
mysql4.1は・・・orz
46NAME IS NULL:05/01/21 09:52:48 ID:???
教えて下さい。

仕事でPostgreSQLを新規導入するんですが、ハードディスクの必要容量を見積もらなければいけなくなりました。

ポスグレのデータ型ごとの記憶容量の資料が見つからなくて困っています。
(INTなら4バイト、VARCHARなら文字数+1バイト みたいな資料です)

良い資料があったら教えてください。

ちなみにOSはソラリスです。
47NAME IS NULL:05/01/21 10:46:31 ID:???
46です。 自己解決できました。

日本PostgreSQLユーザ会のメーリングリストのアーカイブ
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-March/008587.html
48NAME IS NULL:05/01/22 00:39:42 ID:???
PostgreSQLの呼び方ってなに?
俺は「ポストグレス」。
周りはポスグレだけどなんか気持ち悪い
49NAME IS NULL:05/01/22 00:54:46 ID:???
>>48
そういうのは大概FAQにある。
で、だな。オイラが代わりに探してやろう。

まず postgresqlの本山。ttp://www.postgresql.org/
FAQつーのが見つからんが、多分Documentationってのがそうだろう。
言語ごとにFAQがあるみたいだな。Japaneseでよかろう。
「1.1) PostgreSQLとは何ですか? 何と読みますか?」
FAQの一番最初らしいな。
「PostgreSQLはPost-Gres-Q-L(ポスト - グレス - キュー - エル) と発音します。」
つーことだ。
50NAME IS NULL:05/01/22 01:28:22 ID:???
http://www.postgresql.jp/
ここくらいよめ
51NAME IS NULL:05/01/23 22:14:40 ID:mHsmCG07
文字コードをデフォルトのままにしたら、0x5c を含む文字列も \ をつけてやればちゃんと insert できました。

insert into hoge(name) values('表\示');

しかし、like や正規表現検索でうまく検索できません。

select * from hoge where name like '%表\示%';
select * from hoge where name ~ '表\示';

どうしたらいいんでしょうか?
52NAME IS NULL:05/01/23 22:32:14 ID:???
意識的にエスケープしなきゃならないような環境で使うほうが厳しいんじゃね?
53NAME IS NULL:05/01/23 22:46:31 ID:???
てか、SJISは正式サポートしたんだっけ?
EUCな環境が無かったらUTFにするんだけどなぁ。
54NAME IS NULL:05/01/24 00:14:47 ID:???
やはりWinでもEUCがデフォ
あくまでもDB格納時のはなしだし、とりだすときがUTFだろうがSJISだろうが問題にならないしな
55NAME IS NULL:05/01/24 20:31:21 ID:???
デフォルトはUTFがいいぞな。
じゃないとJavaで扱うとき「〜」が化ける。
8では確認してないけど。
56NAME IS NULL:05/01/24 20:53:10 ID:???
>>55
あいかわらずJavaはダメだな
57NAME IS NULL:05/01/24 23:40:33 ID:???
>>55
EUCでぜんぜんばけないぞ

Javaの〜の問題はMS932の特殊なマッピング方法にある

ちなみにかなり前からこれを解消したJDBCドライバが普通に使われてるけど?
だからMySQLにくらべてPostgresのほうが問題が起きていない

>>56
あいかわらずってどういう意味だよ
Postgresを利用した業務系のシステムで一番つかわれているのはJavaかと思うが
58NAME IS NULL:05/01/24 23:44:41 ID:???
MS932のマッピングがおかしいんじゃなくて、Java側のMS932へのマッピングがおかしいと思ったが?
59NAME IS NULL:05/01/25 01:23:29 ID:???
UNICODEしらべてみそ
MS932だけ変

Javaは忠実に実装しているだけ
ただ、MS932がユーザー数多いので最大限の考慮が必要なのも確か
60NAME IS NULL:05/01/25 14:40:21 ID:???
pgAdminIIIの1.2.0でフォント設定をMSゴシック等にしてみると
とても面白いことが起きるよ
61NAME IS NULL:05/01/26 15:18:36 ID:???
>>60
ん?やってみたけど・・・
どこがおもしろいの?
(再起動しないとフォントは変わらないみたいだけど)
62NAME IS NULL:05/01/26 15:23:43 ID:???
釣られるやつが面白い。
63NAME IS NULL:05/01/26 18:54:48 ID:???
可哀想な環境にいるんでしょうね。
64NAME IS NULL:05/01/26 20:59:18 ID:???
ttp://pginstaller.projects.postgresql.org/FAQ_windows.html

の2.6.にpginstallerでエンコーディングにUnicodeが選べない理由が
書いてあるのだけど、
(UnicodeがWindowsで完全にサポートされていないから、だと)
これってCREATE DATABASEでデータベースを作成する時もUnicode
使っちゃダメって事?
65NAME IS NULL:05/01/27 13:02:48 ID:lWjQEhZD
全然関係ない話なんですが
いまPostgreSQLとEXCELでデータベースを作っていまして
疑問なんですが
EXCEL使うことってグラフが割りと簡単に使える以外の利点ってあるんでしょうか?
VBAは使っていますがEXCELな機能といえば大量のレコードを表から読んでるだけで
それは旧データベース(アクセスなのですが)からの移行のためだけだと考えています。
運用に入ったらおそらくレコードが一個ずつ地味に増えていくだけなのでこういった作業はなくなるのです。
グラフ描画は使うことになるかもしれないですが。
で、実際にレコードを追加するときもVBAのフォームを使って済ませたほうが簡単そうな気がしてきます。
というのは一回の入力項目が可変なのが理由なんですが
ようするにケースバイケースで違った入力シートを用意するのは面倒だからなんです
フォームを使えばさらにAというレコードも追加したい場合はここをクリックみたいな感じで新しいフォームを表示させればいいのですが。

EXCELつかってらっしゃる方意見を聞かせてください
66NAME IS NULL:05/01/28 12:31:09 ID:???
>>65
EXCELでデータベースって...元データから取ってくれば良いじゃん。
ACCESSからPostgreSQLへ移行し、EXCELをクライアントソフトとして使いたいって事じゃないの?

67NAME IS NULL:05/01/28 12:43:33 ID:GZR1+sf5
XPで8.0.0使ってる人いませんか?
インストールの最後で、サービスが開始できなくて
とまっちゃうんですが

>サービス 'PostgreSQL Database Server 8.0'(pgsql-8.0)を開始できませんでした
>システム サービスを開始する特権を持っていることを確認してください

XPって普段使ってないからよくわかんないんです
アドミニ権限のユーザではインストールすらできないし
対策方法わかる方教えくだしあ
68NAME IS NULL:05/01/28 13:41:07 ID:zslxpP17
XPProSP2でadministrator権限のユーザでインストールして動いてるけど。
69NAME IS NULL:05/01/28 14:22:14 ID:???
>>68
レスどうもです。
まじすか。もう一回入れなおしてみます
70NAME IS NULL:05/01/28 22:35:38 ID:???
うにくす系OSならcronでvacuumdb -aですが、
Windowsで定期的にVACUUMかけるにはどんな方法がありますか?
71NAME IS NULL:05/01/29 00:26:32 ID:???
>>70
スレ違い。
Windowsで定期的にコマンドを実行すればいいだけだろ。
「スケジュール タスク」辺りでググれ。
72NAME IS NULL:05/01/30 09:50:20 ID:7cAEIu0m
PostgreSQLの呼び方ってなに?
俺は「ポストグレス」。
周りはポスグレだけどなんか気持ち悪い
73NAME IS NULL:05/01/30 09:53:52 ID:???
74NAME IS NULL:05/01/30 10:10:18 ID:???
('A`)
75NAME IS NULL:05/01/30 11:01:33 ID:???
>>72
PostgreSQLの誕生の歴史を調べれば、おのずとなんと読むのが正解かわかる。
76NAME IS NULL:05/01/30 14:09:29 ID:???
ポストグレエスキューエルが正解ですね?
77NAME IS NULL:05/01/30 18:24:10 ID:???
>>72
真の名前は教えないことになっております。
78NAME IS NULL:05/01/31 02:03:34 ID:???
ポストグレス キュー エル が正解。
79NAME IS NULL:05/01/31 02:04:14 ID:???
普通はポストグレスで通じるな。
80NAME IS NULL:05/01/31 02:05:25 ID:???
LinuxにRPMで入れたときも、DB管理用のユーザ名がpostgresになってる事から、>>78で間違いない。
81NAME IS NULL:05/01/31 09:38:15 ID:???
>>80
RPMの人が間違えてるかもしれないじゃないか!
82NAME IS NULL:05/02/03 11:59:13 ID:???
Win32版、インストールするとdataディレクトリ以下が
できちゃってるのな。locale付きで。
日本語の検索がおかしくなって判明。
dataディレクトリ内削除のうえ、initdb --no-locale
で解決。
83NAME IS NULL:05/02/04 23:02:28 ID:???
>>82

インストール中にデータベースクラスタのロケールとデフォルトエンコーディングが指定できたと思うけど・・・

日本語版インストーラではロケール'C'、エンコーディング'EUC_JP'が初期値になってたような気が。
84NAME IS NULL:05/02/05 20:59:28 ID:???
仕事でSQLを使う事になったので、勉強のためPostgreSQLを入れてみました。
環境はMac OS X(10.3.7),PostgreSQL8.0.0
昨日の夜から寝ずに調べてようやっと、今日のお昼頃にデータベースとテーブル(とその中身)を
入れられました。(UNIXもそう経験無いので時間かかっちゃった)
これからこいつにガンガンデータを入れて操作を覚えようと思います。
これから何かと質問させてもらうと思いますが、その時は宜しくお願いしますね。
85NAME IS NULL:05/02/06 12:39:32 ID:???
おう。どんとこいや。
8684:05/02/06 22:38:06 ID:???
>>85さん
ありがと
がんばります。
かなり四苦八苦していますがいくつかinsert文でデータを入れて、
indexを作りようやく準備が終わったという感じです。
この後の「これを使える様にしておけ!」という構文等ありましたら教えてください。
87NAME IS NULL:05/02/06 23:14:45 ID:???
>>86
それよりも、マニュアル読めるようにしておけ。
88NAME IS NULL:05/02/07 12:35:43 ID:???
>>83

>インストール中にデータベースクラスタのロケールとデフォルトエンコーディングが指定できたと思うけど・・・
通常版の「postgresql-8.0.zip」で確認してみましたが、デフォルトの
ロケール「C」エンコーディング「SQL_ASCII」でした。
エンコードは間違いなく「EUC_JP」にしてたんですがねぇ。

今は日本語版インストーラーがダウンロードできるようになったんですね。
今度試してみます。
89NAME IS NULL:05/02/07 12:42:04 ID:???
>>86
(´-`).。oO( なんで INDEX 張るのと INSERT するのがそういう順だろう… )
90NAME IS NULL:05/02/07 16:11:27 ID:???
>>89
インデックスなしでのデータ挿入の方が速いから、
大量に初期データを入れる場合なんかは、
後でインデックスを作るけど。

まぁ、インサート後でインデックスを作るのはアリだろ。。
91NAME IS NULL:05/02/08 12:43:16 ID:???
>>90
サークルκ ヽ(´∀`)ノ サンクス
9284:05/02/09 00:25:27 ID:???
マニュアルですか。頑張って読む様にします。アドバイスありがと。
>>89-90
ひょっとして何かおかしかったですか?!
順序がおかしいとかかな?
調べてみます。ヒントありがと。

93NAME IS NULL:05/02/10 02:05:33 ID:???
>>92
マニュアルは隅々まで読むんじゃなくて
どこにどんなことが書いてあるのか大体のところを把握できれば十分。
94NAME IS NULL:05/02/10 23:27:41 ID:???
最初とメジャーバージョンアップ毎くらいは隅々まで読み返してもいいかも。

リリースノートだけでは差分の差分の差分の……って感じで見落としていたものを発見出来たりするし。

95NAME IS NULL:05/02/11 01:39:49 ID:???
隅々まで読むのは理想だけど、入門者にとって現実的じゃないからな。
しかし、PostgreSQLの使い方はマニュアルに書いてあるということくらいは実感しておいて欲しい。
9684:05/02/13 14:54:42 ID:???
みんさんありがと。
まずはマニュアルを良く読む事ですね。
隅々というのは骨が折れるけどそれが習得の一番の近道かもしれませんね。
読みながら触っているんですが、出来ると「すっげー!」「おもしれー!」を、
連発してちょっと家族からは気持ち悪がられていますが、それでも楽しんで勉強してます。
面白い物ですね。<SQL
97NAME IS NULL:05/02/13 16:58:21 ID:???
Windows版(8.0)がでたので、にわかにつかい始めたユーザーな
のだが、以下のような振る舞いはPostgreSQLの当たり前なのだろうか。

pgAdmin3上でたとえばTESTという半角大文字のテーブルを作って
pgAdmin3 QueryツールでSELECT文を発行するときに

select * from TEST
もしくは
select * from test

だと、ERROR: relation "test" does not existとなり

テーブル名をtestという半角小文字のテーブルにすると
上記SELECT文のいずれも正常に動作する。

どうもODBC経由でも同様の現象が発生していた。
GUIツールがらみのバグなのかもしれんけど、一応きになったので
ご教授いただけるとうれしい。

98NAME IS NULL:05/02/13 18:44:20 ID:???
そのツールでは "" で括られているのではないかな。

=# create table "TEST" (id NUMERIC(8,0));
CREATE TABLE
=# select * from TEST;
ERROR: relation "test" does not exist

こんな感じ。"" でくくれば大丈夫。

=# select * from "TEST";
id
----
(0 rows)

=# \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | TEST | table | xxxxxxxx

99NAME IS NULL:05/02/13 18:56:06 ID:???
>>98

おお。確かに、できましたです。

まだ、使いはじめたばかりなのでいろいろと
知っていなくちゃいけないところをしらないの
でしょう。頑張って、勉強します。

素早いご教授ありがとうございました(__)
100NAME IS NULL:05/02/23 12:44:06 ID:???
DBDモジュールのインストール方法がわからん
101NAME IS NULL:05/02/23 18:31:57 ID:???
perl Makefile.PL
make
make install

ダルゥ。
102NAME IS NULL:05/02/24 22:41:58 ID:???
はじめまして。
最近PostgreSQL8.0を仕事で覚えなきゃいけないことになって
必死で勉強しています。ってかDB関係なんてAccessくらいしか
やったことないんで、かなり大変です。
それで質問なんですが
テーブルを作れるのにファンクションが作れないなんてことは
あるんでしょうか?SQLファイル(別会社の人が作った物)をエディターに
読み込んで実行かけてるんですが、かならずファンクション作成の時に
エラーで止まっちゃいます。そこで色々調べてたのですが
ファンクションの最後で必ずレコード型の戻り値を返しています

FOR rec IN select なんたらかんたら ←こんなカンジうろ覚えで申し訳ないです
  RETURN NEXT rec;
END FOR

そもそもSQLプログラム(plpgsql)にあまり馴染みがないので
よく分からなかったんですが、selectで読み込んだレコードって一括で入って
来ると思ってたのですが、FOR文でループさせてるって事は1レコードずつってことですかね?
それとRETURN NEXT って書き方も良く分からないです。RETURN rec;じゃダメなのかな〜
ループ条件も僕にはあまり馴染みがない書き方ですね。
そのSQLファイルは、PostgreSQL7.4.5を想定して作られているんですが、
それとエラーは関係ないですよね?
エラーの内容も書きたいんですが覚えてないんで書けないです。すいません。
ちなみにRETURNの部分をコメントアウトしてやると全て正常に実行できました。
なので悪さしてるのはこの辺かと勝手に思ってるんですが・・・

ちょっと意味不明かも知れませんが、アドバイスでも何でもいいんで助言いただけたらと
思います。長文&駄文失礼しました。
103NAME IS NULL:05/02/25 00:02:04 ID:???
まずふつうのデータベースの仕組みをおぼえろ
104NAME IS NULL:05/02/25 00:14:40 ID:???
複数行を返すなら RETURN NEXT を使う。
1行だけ返したいなら RETURN rec でいい。
105102:05/02/25 09:20:01 ID:???
昨日、質問した102なのですが、別会社で作られてるSQLファイルの事で
また疑問が出てきたので教えてください。
ファンクションを作成してReturnで戻り値を返すのはいいんですが、
そのファンクションの呼び出し元がどこを探してもないのです。
こういうのってSQL実行する時にエラーの原因になりますか?
106NAME IS NULL:05/02/25 09:55:07 ID:???
そんな事より1よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。
昨日、近所のPostgreSQL見たんです。PostgreSQL。
そしたらなんかループにRETUENあってわからないんです。
で、よく見たらなんかレコード方の戻り値をかえしてたんです。
もうね、アホかと。馬鹿かと。
お前らな、RETURN NEXT rec;如きで普段来てないPostgreSQLに来てんじゃねーよ、ボケが。
RETURN NEXT rec;だよ、RETURN NEXT rec;。
なんか親子連れとかもいるし。一家4人でPostgreSQLか。おめでてーな。
よーしパパplpgsql頼んじゃうぞー、とか言ってるの。もう見てらんない。
お前らな、RETURN NEXT rec;やるからさっさと動かせとと。
PostgreSQLってのはな、もっと殺伐としてるべきなんだよ。
テーブルロックを使った奴といつデッドロックが始まってもおかしくない、
LOCKするかABORTするか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
で、やっと動いたかと思ったら、隣の奴が、呼び出し元がないで、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、呼び出し元がないなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、呼び出し元がないで、だ。
お前は本当に呼び出し元がないのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、呼び出し元がないって言いたいだけちゃうんかと。
PostgreSQL通の俺から言わせてもらえば今、PostgreSQL通の間での最新流行はやっぱり、
大盛plphp関数、これだね。
plphp。これが通の頼み方。
大盛plphp関数ってのは関数が多めに入ってる。そん代わり不安定。これ。
で、それに大盛関数。これ最強。
しかしこれを頼むと次からオラクラーにマークされるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前らド素人は、SQLを先に覚えなさいってこった。
107NAME IS NULL:05/02/25 12:37:41 ID:???
10文字くらいにまとめてください。
108NAME IS NULL:05/03/01 02:08:21 ID:???
まとめてみよう

RETUENって何?
109NAME IS NULL:05/03/01 02:49:46 ID:???
わかりやすかった。
感動した。
110NAME IS NULL:05/03/01 18:05:37 ID:7guaqeqz
>102
もしかして、createlang してないだけでは?
111NAME IS NULL:05/03/20 23:38:56 ID:DayhZ7i9
インストール先のbinディレクトリ下にあるコマンドラインツールを動かすには
どうしたらいいのでしょうか?以下のようなメッセージが出て困ってます。
could not find a "psql" to execute
psql: FATAL: password authentication failed for user "ユーザ名: "
(ユーザ名: は-Uでユーザを指定したときは、そのユーザ名になります)

というかver7.xでpg_dumpによって作ったスクリプト形式のDBバックアップを
リストアするのはどうすればいいのでしょうか?
これができればコマンドラインツールに拘る必要はないのですが。
112NAME IS NULL:2005/03/25(金) 11:48:26 ID:???
ユーザの会のこのリンクが
ttp://www.postgresql.jp/PostgreSQL/download.html
Windows版インストーラ(PgFoundry)

こうなってるのは漏れだけですか?

PgFoundry Could Not Connect to Database:
113NAME IS NULL:2005/03/30(水) 00:39:11 ID:LSeHFrsn
create table student(id varchar(10),
name varchar(15),
class varchar(10)),
insert into new_student values(1,'田中義春','たなかよしはる','向日葵組','ひまわりぐみ');
insert.....

と繰り返していって、結果を
id name class
----------+------------------+-----------
1 田中義春      向日葵組

としたいのですが、読み の挿入がうまくいきません。
表示部分には、読みを表示させたくないのですが。
どうしたら、いいのでしょうか?
114NAME IS NULL:2005/03/30(水) 01:06:43 ID:???
テーブル定義は正しい?

読みらしきものが定義されていませんが…
115NAME IS NULL:皇紀2665/04/01(金) 00:52:35 ID:???
Win版8.0.0-beta3(開発用 : 仕事が途切れなくて入れ替える暇なし)なんだけど、
int4,float8,float8の3カラムのテーブルを作って40万行ほど突っ込んだら
テーブルファイルサイズが68MBにもなってた。
単純計算で1行20byte*40マソで8MB+α程度かと思ってたんすけど....

今まで記憶容量の計算なんてしたこと無かったけど、結構食うもんなんだな。
int4カラムの主キーインデックスだけで8MBある。orz
116111:皇紀2665/04/02(土) 01:14:13 ID:???
自己解決しました。
コマンドプロンプトを「別のユーザとして実行...」でpostgresユーザとして
立ち上げてから実行するとコマンドラインツールが使えました。

ところでインストーラが作ってくれたpostgresユーザはどうやったら消すか
あるいはパスワード変更できるんだろう?
ちなみにOSはXPhomeSP1です。
117NAME IS NULL:皇紀2665/04/02(土) 01:53:36 ID:???
>>116
そろそろ、スレ違いだと気づけ。
118NAME IS NULL:2005/04/20(水) 10:31:21 ID:???
使おうと思ったがインストールすら失敗してできん。
くそが。
119NAME IS NULL:2005/04/20(水) 13:13:57 ID:???
インストーラ版を使っても?
120NAME IS NULL:2005/04/20(水) 16:49:38 ID:???
寧ろどうやったらインストールできなのか知りたい
121NAME IS NULL:2005/04/20(水) 18:45:23 ID:???
ただのアンチとみた
アンチは低脳だからねぇ
122118:2005/04/21(木) 07:40:51 ID:???
>>121
アンチって俺がか?
俺はpostgreSQLの機能の豊富さ好きだぞ。
ちょうど使いたい機能があったし。

ところでインストールは解説サイト通りにインストーラ使ってやったんだが出来なかった。
まぁもう少し粘ってみるけどな。
123NAME IS NULL:2005/04/21(木) 09:49:35 ID:???
もしそうならどこで躓いたか書くと
誰か助けてくれるかもよ
124NAME IS NULL:2005/04/21(木) 14:22:06 ID:???
インストール時の注意点を守らないからだったら怒るよ
125118:2005/04/23(土) 03:02:25 ID:???
やっといくつかのエラーから抜け出せたがupgrade.batが失敗する。
postgresql-8.0.2-ja.zipをDLして解凍
postgresql-8.0-ja.msiを実行し完了
upgrade.batを実行
エラーメッセージ「サービス 'PostgreSQL Database Server 8.0'(pgsql-8.0)をインストールできませんでした。
システムサービスをインストールする特権を持っている事を確認してください。」

この特権の確認ってどうやるの?
126118:2005/04/23(土) 04:20:36 ID:???
インストールするたびにインストーラで設定したIDとパスワードが蓄積されていたらしく、
しかもそれがアンインストールで削除されないようで、
新しくインストールしたpostgresに古いIDとパスワードを求められて困った。
最初の方のメモ消しちゃったし。
pgadmin3でサーバーをダブルクリックして思いついたパスワードを入力してみたが
error connecting to the server : fatal : password authentication failed for user "postgres5"
と言われるし、windowsタスクマネージャではpostgres.exeが4つpostmaster.exeとpg_ctlが一つずつ
ユーザーpostgres1によって起動されているが、pgadmin3の画面では一つだけ登録されているサーバが
postgres5によって起動されている。(これらの起動ユーザが一致しないのは問題ない?)
古いIDとパスを削除して新しく設定した方でコネクト出来れば良いんだけど。
最初、英語版のインストールに失敗して、それでフォルダ全部削除して日本語版でインストールを試して成功したんだけど、
フォルダ削除してもIDとパスの情報が残ったって事はどっか別のとこに記録されてるはずで
それが何処か分からないから消せないし。
127NAME IS NULL:2005/04/23(土) 09:08:41 ID:6Z+WB6dZ
別スレでも聞いてます。
VBからPostgreSQLのODBC設定をしようと思い、SQLConfigDataSourceメソッドを使ってます。
普通に管理ツールからODBCの設定画面を開いて「textを長文字列として扱う」項目があるんですが、
VBで記述するにはなんて書けばいいか知ってる人がいれば教えてください。
128NAME IS NULL:2005/04/23(土) 15:49:17 ID:3A/gShpZ
1>>18 ログオン失敗で先にすすめないなら、XPproならコントロールパネル
から管理ツール、「コンピュータの管理」と入っていき、postgreインストーラ
で作成したユーザアカウントのゴミを削除すれば、つぎはうまくいくはずだ。
Windowsでpostgresqlを使おうするやつはほとんどいないようだ。
UNIXやpostgresで苦労したのだろう。
石井達夫というのがユーザ会の会長か理事長?らしいが、
会員になるに許可がいるらしい。現在ユーザ会員数は2500人程度しかいない
のでpostgresqlは一部のオタクだけで固着してしまっているようだ。
作ったシステムは死に、やがて自然消滅するのも時間の問題だな。
検索するにしても英数字だけでなく、漢字、ひらがな、カタカナ、全角
半角と日常表現が多岐に渡っている日本のデータベースの有効活用範囲
は英語圏よりも大幅狭いはずだ。無料とはいえmysql、postgresqlに
夢中になる必要は全くないぜ。
129NAME IS NULL:2005/04/23(土) 21:55:03 ID:???
ウェブサーバとDBサーバ(8.0.2)を分けているのですが、ウェブサーバから接続できないです。

ウェブサーバ 192.168.1.10
DBサーバ 192.168.1.11

/usr/local/pgsql/data/pg_hba.conf

host all all 255.255.255.0 trust

と書きました。昔は/usr/local/pgsql/data/postgresql.confに、tcpip_socket=on/true
と書くらしいのですが、8.0.2はどのようにすればいいのでしょうか?

iptablesも切っています。
130NAME IS NULL:2005/04/23(土) 22:02:34 ID:???
131NAME IS NULL:2005/04/23(土) 22:49:24 ID:???
>>130
ありがとうございます。postgresql.confに以下を追加しました。

listen_addresses = 'localhost,192.168.1.10'
port = 5432

postgresql.confを変更後、終了起動や再起動しましたが、
ウェブサーバから接続しようとすると弾かれます・・・。

Connection to database 'dbtest' failed.
could not connect to server: Connection refused
Is the server running on host "192.168.1.22" and accepting
TCP/IP connections on port 5432?

ウェブサーバ側からnmapしても5432ポートが空いてないんですよね。
DBサーバ上でnmap localhostだと5432が空いています。

2台のサーバはハブでつなげているだけです。
132NAME IS NULL:2005/04/23(土) 22:53:00 ID:???
すいません。こっちでした。DBサーバは、192.168.1.11です。

Connection to database 'dbtest' failed.
could not connect to server: Connection refused
Is the server running on host "192.168.1.11" and accepting
TCP/IP connections on port 5432?
133NAME IS NULL:2005/04/23(土) 23:24:37 ID:???
>>132 >>133
書き間違い?
DBサーバーが、192.168.1.11 なら、postgresql.conf は
listen_addresses = 'localhost,192.168.1.10'

listen_addresses = 'localhost,192.168.1.11'
と思うんだが。
134NAME IS NULL:2005/04/24(日) 02:02:21 ID:???
>>128
コンピュータの管理を開くとローカルユーザという項目があると多くの解説サイトには書かれているがそれが無い。
135118:2005/04/24(日) 02:56:14 ID:???
pgadmin3でサーバー全部削除してpgadmin3を再起動したら
最近追加したアカウントのサーバが現れてうまくいった!
136NAME IS NULL:2005/04/24(日) 15:59:31 ID:???
>>133
ありがとうございます。接続を許可するホスト名かと思っていました。
ウェブサーバからもnmapでDBサーバの5432番を見れるようになりました!

まだ接続できないです。。

ウェブサーバにもpostgresql 8.0.2を入れていますが、特に設定していません。
このエラーは、ウェブサーバ側のpg_hba.confを編集する必要があるという意味なのでしょうか?

./test run.
Connection to database 'dbtest' failed.
FATAL: missing or erroneous pg_hba.conf file
HINT: See server log for details.
137NAME IS NULL:2005/04/24(日) 16:20:06 ID:???
>>136 試してないけど。
DBサーバーのpg_hba.confは
host all all 255.255.255.0 trust ぢゃなく
host all all 192.168.1.0/24 trust ではないかと。
ウェブサーバーに必要なのはpostgresqlのクライアントライブラリ「だけ」であって
サーバーは不要。
だから、ウェブサーバー側の設定ファイルうんぬんは関係ない。
ついでにtrust指定だとパスワードなしで、全データベースに接続できてしまうので、
セキュリティを考えるとよろしくない。
trustではなくmd5やpasswordにしたほうがよいと思われ。
138NAME IS NULL:2005/04/24(日) 17:12:31 ID:???
>>137
動きました!!ありがとうございます!

./test run.
select OK : 5 x 3
--------------------
no:0 name:cat cnt:1
no:1 name:dog cnt:1
no:2 name:bird cnt:1
no:3 name:mouse cnt:1
no:4 name:dokuo cnt:1

Bye.

CIDRっていうのを勉強してみます
139NAME IS NULL:2005/04/25(月) 03:10:50 ID:TW8wBixv
テーブルスペースを作ろうとpgadmin3から操作を行ったのですが、
ERROR: could not set permissions on directory "C:/pgsql": Permission denied
と出ます。
XPの読み取り属性の問題かと思い、attribコマンドで読み取り専用属性を解除して試しましたが同じ結果でした。
Cドライブ直下にpgsqlフォルダはちゃんとありますし、このフォルダを削除してからやると別のエラーメッセージが出ます。
WEB上でLinux版で発生した同様な問題についての議論を見つけましたが、
結論は不明のままOSの再インストールという方法に終着していました。
この状況についてどのような原因や解決策が考えられるでしょうか?
140NAME IS NULL:2005/04/25(月) 10:08:15 ID:???
postgresユーザー“だけ”が読み書きできるようにしてごらん
141139:2005/04/25(月) 14:42:34 ID:TW8wBixv
>>140
caclsコマンドでpostgresをwindowsサービスとして起動するユーザ・postgresに接続する際のユーザ両方について
それぞれのユーザのみにフルコントロールを与えてテーブルスペース作成を試みましたが結果は同じでした。
cacls C:\pgsqlとして表示した時の権限者が、
hostname\username となっているのですが、このhostnameがpostgresサーバに設定してあるものと異なるのが気になったのですが
hostnameの部分の変更方法が分かりません。
142NAME IS NULL:2005/04/25(月) 15:27:55 ID:???
ドメイン参加してる?
変更は無理だよ、追加して消す、とかしないと
143139:2005/04/25(月) 18:15:12 ID:???
回線を介したアクセスではなく、ローカルのマシン一台の中で操作しています。
caclsコマンドで表示した時のhostnameはFMV〜というコンピュータの名前で、
postgresサーバのホスト名はlocalhostと設定しています。
cacls C:\pgsqlの結果は FMV〜\username
pgadmin3のサーバプロパティに表示されるホスト名はlocalhost
という状況です。
144NAME IS NULL:2005/04/25(月) 18:21:33 ID:???
このスレで良いのか分からんけど、ダブルバイト文字の = での比較ってできないの?
GROUP BY で DBCS の入ってるカラム指定すると重複行がいっぱい出るよ。
PostgreSQL 8.0 (Windows XP) / 文字セット UNICODE

xxxxxx=# SELECT '京王プラザホテル' = '京王プラザホテル';
?column?
----------
f
(1 行)


xxxxxx=# SELECT '京王プラザホテル' LIKE '京王プラザホテル';
?column?
----------
t
(1 行)


xxxxxx=# SELECT 'AAA' = 'AAA';
?column?
----------
t
(1 行)


xxxxxx=# SELECT 'AAA' LIKE 'AAA';
?column?
----------
t
(1 行)
145NAME IS NULL:2005/04/25(月) 20:34:30 ID:???
>>144
定期的に出てくるな、その問題。
http://pc8.2ch.net/test/read.cgi/db/1103113155/465-470
http://pc8.2ch.net/test/read.cgi/db/1079771059/42-47
ちょっとググり難いとも思うが。
146NAME IS NULL:2005/04/25(月) 20:40:53 ID:???
可能な限りDBに高速で書き込む方法について、なにか良いアイディアはありませんか?

Cなので手段は選ばないです。
147NAME IS NULL:2005/04/26(火) 00:43:12 ID:???
fd = fopen(filename);
write(fd, ...);
148NAME IS NULL:2005/04/26(火) 11:34:03 ID:???
>>146
HDDへの書き込み速度次第じゃない?
CPUの演算やらに比べて、明らかに此処の部分で速度落ちるんだし。
149NAME IS NULL:2005/04/26(火) 12:26:07 ID:???
書き込みだけってんなら、インデックスは張らず、WALの同期書き込みも切ってしまえば。
150NAME IS NULL:2005/04/26(火) 16:23:14 ID:IyLFLaTL
これって
VBからつなごうとすると
ODBCデータソース経由でしか接続できないんだろうか・・・・
標準ではODBCドライバしかないっぽいし・・・
だれかOLEDB経由の方法接続知ってる香具師いたら情報キボン
151NAME IS NULL:2005/04/26(火) 17:29:19 ID:???
>>150
今、確認してみたけど、標準で入ってたよ。8.0.1。
ポスグレのインストール時に、どのインストールタイプを選択したのか覚えていないんだが、
カスタムインストールで何か選択しないといけないのかもしれんね。
ちなみに接続文字列はこんな感じでOKだった。
Provider=PostgreSQL.1;Password=mypass;User ID=user;Data Source=localhost;Location=testdb;Extended Properties=""
日本語がきちんと通るかどうかまでは調べてないけど。
152NAME IS NULL:2005/04/26(火) 19:09:05 ID:???
153NAME IS NULL:2005/04/27(水) 17:16:00 ID:???
>151サンクス

入れ直して確かめてみる ノシ
154NAME IS NULL:2005/05/31(火) 09:21:35 ID:???
現在、RedHatLinuxでPostgreSQL7.2.2を使っています。
今回XPで8.0に移行しようと考えているのですが、
その際のバックアップ、リストアーについて気をつける点等ありますか?
pg_dumpallで*.outファイルを作成し、psqlコマンドで試しているのですが、
認識していないようです。
155NAME IS NULL:2005/05/31(火) 10:52:27 ID:???
気をつけるのは、環境の差くらいかなあ
psql を実行する環境がShiftJISだとちょっとめんどい
156NAME IS NULL:2005/05/31(火) 16:51:34 ID:???
>>155
そうですか。なんとかやってみます。
有難うございました。
157仕様書無しさん:2005/06/10(金) 04:32:41 ID:vqj8Y6od
postgreはテーブルのレコード数の上限とかありますか?
158NAME IS NULL:2005/06/10(金) 12:33:41 ID:???
前はOID(32bit)が限界を作ってた気もするが
今はWITHOUT OID もできるしどうなんだろ
159NAME IS NULL:2005/06/10(金) 19:27:14 ID:???
制限なしってかいてあることから32bitどころじゃないだろうね
160NAME IS NULL:2005/06/10(金) 20:14:57 ID:???
PostgreSQL FAQ に書いてありますよ
161NAME IS NULL:2005/06/13(月) 22:29:43 ID:???
ところでPostgreSQLの呼び方ってなに?
162NAME IS NULL:2005/06/14(火) 12:27:47 ID:???
163NAME IS NULL:2005/06/18(土) 17:42:47 ID:???
早まって別スレにも書いてしまったが、
psql 8.0.3 for windowsで\hなどと打つと、
'more' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と言われるのは、私だけでしょうか?
164NAME IS NULL:2005/06/18(土) 18:44:24 ID:???
>>163
more コマンドへのパスが切られてないと思われ。
%windir%\system32 にパスを通せば大丈夫のはず。
165NAME IS NULL:2005/06/18(土) 20:28:10 ID:???
>>164
ありがとうございます。
そーですか、私だけでしたか
166NAME IS NULL:2005/06/23(木) 13:57:51 ID:???
もしかしたらpgsqlに関係なく、単にj2sdkの問題だったらごめん。

RecordSetのカーソルタイプを指定しなかった場合、<RecordSet>.first()
が7.4.xだと問題なかったのに、8だと "SCROLL可能なRecordSetじゃないとだめ"
と怒られるようになったんですが、FORWARD_ONLYなレコードセットで先頭位置決
めは <RecordSet>.next(); を使うしかありませんか?

ちなみに next(); すら書かなかった場合は "ResultSet not positioned properly"
で怒られます。
167NAME IS NULL:2005/06/23(木) 15:33:51 ID:???
FORWARD_ONLYってのがなにかがわかっていればね
まぁどのDBでも基本は順方向
168tsearch2:2005/06/27(月) 13:32:50 ID:bn+qa3Ay
皆様始めまして助けてください。

現在私はPosgreにあるTserch2に Linuxに構築を試みています。

http://www.oss.ecl.ntt.co.jp/のページにある
環境構築手順書の通り操作を行っていくと

データの投入の部分で
ERROR: could not find tsearch config by locale
のエラーが出ます。

トリガーで
CREATE TRIGGER tsvectorupdate BEFORE UPDATE OR INSERT ON tblSample
FOR EACH ROW EXECUTE PROCEDURE tsearch2(idxFTI, pgkakasiw, strText);

データ投入で
COPY tblSample FROM 'data.csv' USING DELIMITERS ',';

としています。

いろいろ調べてはいるのですが
その他のKAKASI version 2.3.4 pgkakasiw-1.1のインストールは
問題なく済んでいて pgkakasiw()は動いています。
通常のINSERTなら問題なく動きます(トリガは削除しています)
Tsearch2のインストール自体はできているようです。
make cleanを行った上で何度か再インストールを試しています。
動作環境も確認済みです。

どなたか解る方いらっしゃいますか?
宜しくお願いしますm(__)m
169NAME IS NULL:2005/06/27(月) 13:46:56 ID:???
locale
170tsearch2:2005/06/27(月) 18:49:41 ID:kZmBp1gp
>>169
ありがとうございます。
一歩前進できましたが、次に更なる問題が出てきています。
同じくデータ投入時に
ERROR: cache lookup failed for function 23825
と言うエラーが発生しています。
171NAME IS NULL:2005/06/28(火) 14:09:05 ID:FyvKDDrO
全然POSTGRES人気無いですね。
意外だな、玄人好みのDBと聞いていましたから。

MySQLのほうが使いやすいですか。
172NAME IS NULL:2005/06/28(火) 14:58:44 ID:???
MySQLで満足してるならそれでいいんじゃね?

PostgreSQLもWindows版は出たばかりだから
ここは静かだろ
173NAME IS NULL:2005/06/28(火) 16:42:23 ID:???
>>171
postgresは人気ないのですか?
Windowsのスタンドアロンのような小規模で簡単なシステムだと
MySQLでも良いのかもしれませんけど、
大規模で複雑なシステムだとpostgresqlでも役不足感がまだある
MySQLなんて当然使えない。
174NAME IS NULL:2005/06/28(火) 16:47:03 ID:???
そのスタンドアロンのような小規模なシステムではSQLiteの方が
使いやすかったり。。。
175NAME IS NULL:2005/06/28(火) 19:40:45 ID:FyvKDDrO
>>173
詳しく聞かせてください。私HIBERNATEとPOSTGRESをWinのサーバーで
使いたいなと思っています。
どちらも将来有望な技術らしいですし。

MySQLも大変使いやすいなと思うのですが、将来は大規模なシステム開発
にも是非携わってみたいとおもいますから、POSTGRESを勉強しようと
おもってここへ来たんです。
意外や意外。あまり盛り上がっていませんね、Win版のPostgres...
176NAME IS NULL:2005/06/28(火) 22:55:38 ID:???
初心者ならPostgreSQLのほうが管理ツール最初からついていたり
ドライバ周りもセットアップされるしらくだと思うぞ
177HYPER& ◆.12JFsoCi6 :2005/07/01(金) 13:32:03 ID:IMbhKt4o
>>176

どうもありがとうございます。私も早速試してみようと思いまして
ダウンロードしたのですが、ちょっとサーバーをリセットできない
状態にありまして。

あと一つだけ伺ってもよろしいでしょうか。Win版Postgres8.0で
何が一番困りますか?MySQLではできたのに、Postgresじゃこんな
こともできないのか、という問題がありましたら、是非事前に
知っておきたいです。

みなさん、どうぞ宜しくお願い致します。
178NAME IS NULL:2005/07/01(金) 15:33:32 ID:???
MySQLから移行したクチだが古いバージョンのドライバに注意くらいか
179NAME IS NULL:2005/07/01(金) 21:35:50 ID:IMbhKt4o
>>178
どうもありがとうございます。
MySQLに何かご不満でもあったのでしょうか?

私はPOSTGRESの日付関数に大変魅力を感じています。
でも、HIBERNATE使うとMySQLもPostgresも大差なくなってしまいますが。

どうでしょう、やはり、豊富な関数群に魅力を?
180NAME IS NULL:2005/07/01(金) 21:58:32 ID:???
4.1が正式リリース後も8ヶ月くらい日本語がまともに通らなかったのを放置してたから
移行した連中が多いから俺も移行したよ
サブクエリー対応したのはいいけどSQLも結構バグだらけだったり
環境のファイルシステムのキャラクタセット無視してUTF8でファイル作ったり
ひどいのにあきれた

結果期待してなかったけどパフォーマンス面でもまったく問題ないし
ライセンス代が浮いたくらいかな

スタンドアロンの組み込みDBならHSQLDBのほうが楽だけどね

最初から各種ドライバがセットアップされてGUIツールがついてるから
MySQLより初心者には優しいよね
MySQLはコンフィグファイルをテキストエディタで自分で書き換えないといけないし
GUIツール使うとその設定を吹き飛ばしてしまったり泣ける

MySQLはライブラリのライセンスがLGPLなときから使ってたから愛着はあったんだけど
フリーでマルチユーザー、Windows対応なDBがほしかっただけだからもういいや
181NAME IS NULL:2005/07/01(金) 22:08:38 ID:???
漏れも日本語周りがクソだったのと、タイミング良く8.0が
出てきたこともあってポスグレに移行した。
機能的にはポスグレ > MySQLなので移行の弊害は
今のところない。
データ件数が少なくて、単にデータの出し入れ程度が
出来れば良いものはSQLiteを使っている。
MySQLは中途半端な位置づけになったかな、という感じ。

182NAME IS NULL:2005/07/01(金) 23:14:24 ID:???
>>175
Windowsのってのがイマイチな考え方なのでは?
なによりある程度以上の規模のシステムを構築されるなら
BSDやLinuxをサーバーとしてお使いになる方が楽ですよ
183NAME IS NULL:2005/07/02(土) 10:20:40 ID:I2kVu6Mc
>>180-182
どうもありがとうございます。やる気がどんどん出てきました。
このスレがあまり盛り上がっていないから、もうMySQLが成熟したんだな
と思っていましたが、Postgresはやはり高く評価されていますね。

まだ、Windowsに移植されたばかりなのが気がかりです。

>>182
開発もLinuxでされているのでしょうか?私もそうでしたけど、
もうWin2003Serverは本当に良くできています。値段も安いし、不満は
ありません。
184NAME IS NULL:2005/07/02(土) 11:12:26 ID:???
>>183
Windowsが良くできているのはそれで良いのですが
サーバとして見た場合、GUIも不要ですし無駄なデーモン(サービス)も
起動しなくて良いのでは?って意味ではBSDやLinuxの方が有利で
カストマイズも楽ですよ、仕事で使われているこれらのフリーのOSは
無料だからって理由で選択している人はいないと思います

無論Win版のpostgreSQLにはそれなりの価値もあります
テスト環境やスタンドアロン用システムの開発に使えば
将来、BSDサーバやMacでさえ動かせる可能性が出てきますから。
(これはMySQLでも同じですけどね)
185NAME IS NULL:2005/07/02(土) 12:33:04 ID:???
>>184 どのOSで動かすとPostgreSQL速いの?
186NAME IS NULL:2005/07/02(土) 13:06:18 ID:???
MySQLでは日本語禁止にできたのに、PosgreSQLではできない。
日本語周りでトラぶったら全部俺のせいにされる。_no
187NAME IS NULL:2005/07/02(土) 14:18:25 ID:I2kVu6Mc
>>186
ちょっと不安になる書き込みです。

わたしはMySQLですべて文字列はUTF8で取り扱っています。
日本語禁止にできないとは、つまりどういうことなのでしょうか。
私はUTF8でLIKEで類似文字列の検索など、問題なくできています。

ブラウザー(IE)のユニコード表示って綺麗にするにはちょっとした
テクニックがいるから、まだまだユニコード万能とは言えませんが、
多国の言葉の取り扱いはだんだんとできるようになってきましたね。
188NAME IS NULL:2005/07/02(土) 15:15:38 ID:???
日本語の文字化け等でDBの問題なら諦めがつくけど、
使う側の不具合まで押し付けられるのが鬱。


俺 「MySQLでは日本語の扱いに問題があります。」
上司 「それじゃ仕方がないな。」

俺 「PosgreSQLでは日本語の扱いに問題があります。」
上司 「そんなわけないだろ。」
俺 「そうですね。」
189NAME IS NULL:2005/07/04(月) 14:00:50 ID:???
ワロタ
190NAME IS NULL:2005/07/08(金) 10:07:19 ID:???
>>188
座布団一枚!
191NAME IS NULL:2005/07/24(日) 15:23:22 ID:qAy7nOx4
初めまして。最近、Win環境でPostgreSQLを始めて、Cygwinを使いデータベース
作る段階で
$creatdb test と入力したところ、
createdb: could not connect to database template1: could not connect to
server:
No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
と出ました。
どうすればいいのかアドバイスお願いします。できれば、優しく教えてください。
192NAME IS NULL:2005/07/24(日) 18:43:38 ID:???
>>191
cygserverとpostmasterを起動してる?
193NAME IS NULL:2005/07/24(日) 18:55:02 ID:???
なぜにWinネイティブ版ではなくワザワザCygwin環境で構築するんだろ。。。
194NAME IS NULL:2005/07/24(日) 18:55:41 ID:qAy7nOx4
>>192
cygserverは起動させています。postmasterの起動はどうすればいいのでしょうか?
195192:2005/07/24(日) 19:11:52 ID:???
>>194
Cygwin付属の文書 (たぶん /usr/share/doc/Cygwin/postgresql-7.4.5.README )を読むべし。
196NAME IS NULL:2005/07/24(日) 20:08:27 ID:qAy7nOx4
>>195
READMEを読んで、postmasterの起動を行ったのですが、
$ postmaster: could not find the database system
Expected to find it in the directory "/var/postgresql/data",
but could not open file "/var/postgresql/data/global/pg_control":
No such file or directory
とでました。なにを直せばいいのでしょうか?
197NAME IS NULL:2005/07/24(日) 20:12:21 ID:???
Cygwinはよく知らんが、initdbをして無いんじゃないのか?
198NAME IS NULL:2005/07/24(日) 20:28:02 ID:???
たぶんそれだろうね。
インストール時のオイラのメモでは、こんな感じでインストール・設定したっぽい。
1. 準備できてるかどうか
 cygcheck -c cygwin cygipc postgresql
 引数の3つのパッケージがインストールされていることを確認
2. ipc-daemon起動
 ipc-daemon2 &
3. データベース領域確保
 initdb --no-locale -D /var/postgresql/data
4. PostgreSQL起動
 postmaster -D /var/postgresql/data &
5. createdbでお好みに。
199NAME IS NULL:2005/07/24(日) 20:53:51 ID:???
200NAME IS NULL:2005/07/25(月) 00:35:36 ID:p8MjnKxu
すみません!cygcheck -c で確認したところcygipcがインストール
されていませんでした。
$bunzip2 -c cygipc-1.13-2.tar.bz2 で読み込ませて、
$tar xfv cygipc-1.13-2.tarとインストールしようとしたら
tar: cygipc-1.13-2.tar: Cannot open:No such file or directory
tar: Error is not recoverable: exiting now
と出ました。これは、インストールの仕方が、間違っているのでしょうか?
201NAME IS NULL:2005/07/25(月) 01:21:02 ID:???
なんでここでcygipcが出てくんの
202NAME IS NULL:2005/07/25(月) 01:37:31 ID:p8MjnKxu
>>201
cygipcは必要ないんですか?まだ勉強している段階なのですみません。
initdbをおこなったんですけど、
creating template1 database in /usr/local/pgsql/src/data/base/1..
FATAL: invalid value for parameter "lc_messages": "ja_JP.SJIS"

initdb: failed になりました。この場合は、どこを直せばいいのでしょうか?
203NAME IS NULL:2005/07/25(月) 01:42:47 ID:???
>>202
initdb --no-locale
204NAME IS NULL:2005/07/25(月) 02:03:26 ID:p8MjnKxu
>>203
initdb上手くいきました!!ありがとうございます。
postmasterを起動させて、データベースを作成しようとしたのですが、
createdb: could not connect to database template1: could not
connect to server:
Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
ってでてきました。。これって、どこかの設定が間違っているんでしょうか?
205NAME IS NULL:2005/07/25(月) 02:48:32 ID:???
どうやってpostmasterを起動させたの?
createdb の引数は?あと環境変数も
206NAME IS NULL:2005/07/25(月) 02:49:31 ID:???
207206:2005/07/25(月) 02:51:38 ID:???
あ、起動してた(つもりだった)のか...
でも、起動してなさそうな。
208NAME IS NULL:2005/07/25(月) 14:32:22 ID:p8MjnKxu
>>205
postmasterは、pg_ctl startで起動させました。
postmaster -D /usr/local/pgsql/src/dataでも試してみました。
createdbの引数は -D /usr/local/pgsql/src/data &
です。環境変数は PGDATA /usr/local/pgsql/src/data
です。何か、付け足したりしたほうが良いです?
209NAME IS NULL:2005/07/25(月) 14:57:38 ID:???
PGHOST もあったほうがいいかも。
もしくは、 -h オプションで localhost 指定するとか。
psql -l で template1 は見える?
210NAME IS NULL:2005/07/25(月) 19:47:53 ID:lxjOBCDx
サブクエリ中の複数カラム中の最大値を、外側のクエリの1カラムとして取得するには
どうすれば良いですか?

timestamp1, timestamp2, timestamp3 があって
この中の最新時刻を更新日として取得したい

ARRAY[timestamp1,..2,..3] として、配列中の最大値をMAXで取れないか試したけど
駄目でした

postgreSQL 8.0.3 Windows です

MySQLだと GREATEST()関数で取れたんですけどね
211NAME IS NULL:2005/07/25(月) 23:02:50 ID:???
>>210
SELECT
CASE
WHEN timestamp1>timestamp2 AND timestamp1>timestamp3 THEN timestamp1
WHEN timestamp2>timestamp3 THEN timestamp2
ELSE timestamp3
END AS maxtimestamp
FROM (サブクエリ);

カラムが増えると大変だなぁ。なんかもっといい方法があった気が
しないわけでもないが。
212210:2005/07/26(火) 20:38:05 ID:B94I8Ohd
my $ts = "timestamp '1900-01-01'";

ARRAY[a.更新日,
case when b.更新日<>$ts then b.更新日 else $ts end,
case when c.更新日<>$ts then c.更新日 else $ts end,
case when d.更新日<>$ts then d.更新日 else $ts end
] AS 更新日,

のようにして配列で取得し、perl側で最大値を選択するようにして実現しました

配列の要素に1つでもNULLがあると、配列全体がNULLになるようですね
最初これが原因で配列が取れなくて時間掛かった
213NAME IS NULL:2005/08/02(火) 16:09:11 ID:???
postgreSQL8の日本語版インストーラを使い、
インストールしようとしたのですが、
「次へ」をクリックして行き、"サービス構成"のところで、
パスワードを入力せずに「次へ」を押しました。
すると自動的にパスワードが生成されたのですが、
このパスワードがどこにあるのかわかりません・・・。

インストールを途中で中断して、また最初からやりなおそうとしているのですが、
"サービス構成"のところで、パスワードが間違っているといわれ、
インストールが先に進まなくなってしまいました。
自動生成されたパスワードを知るか、もしくは、最初からやりなおしたいのですが、
どうすればよいのでしょうか?

postgresql-8.0-ja.msi
↑このファイルをダブルクリックしてインストールしようとしています。
8.0.3です
214213:2005/08/02(火) 16:25:05 ID:???
アナルにポッキー入れてやってみたらできました。
ご迷惑をおかけしました
215NAME IS NULL:2005/08/04(木) 16:03:52 ID:???
ホントかよw

コントロールパネルの管理ツール-コンピュータの管理-ローカル ユーザとグループ-ユーザにて
postgresユーザを消せばOK。パスワード再設定でもいいと思うけど試したことない。
216NAME IS NULL:2005/08/23(火) 06:23:52 ID:???
そうか
これからの時代はアナルポッキーか
217NAME IS NULL:2005/08/26(金) 16:16:06 ID:RDFB6LxW
8.0.3なんですが、
ファイルシステムバックアップ(要はデータフォルダのコピー)を試しているのですが、
これのリストア方法をご存知の方知っている方いらっしゃいますか?

単純にdataフォルダを戻すだけでは、内部エラーでサービスが起動しませんでした。
218NAME IS NULL:2005/08/26(金) 16:37:08 ID:RY8JCKjP
  ★★★ また韓国、意図的な、でっち上げ反日報道 ★★★
 韓国の大手テレビ局が8月15日のニュースで報道した「旧日本軍による生体実験」番組が、実は真っ赤なウソ、中国映画の盗用でっち上げだった。
 韓国のマスコミは反日番組で、この種のでっち上げ「歴史歪曲(わいきょく)」をよく行うが、今回の事件で 「日本糾弾ならウソも平気」 という腐敗体質が改めて確認された。

 番組では戦前、旧日本軍731部隊の実験の様子を「白黒の記録フィルム風」に紹介したが、視聴者から「映画の場面と同じだ」と抗議の声が上がり、悪質なでっち上げが露呈した。
 この中国映画はカラー作品だが、テレビでは本物に見せかけて「白黒」に変えられており、意図的なでっち上げであることは明白。

 日本の民主党(岡田党首)は、日本国内に数十万人もいる反日的な在日韓国・朝鮮人に日本の選挙権を与え、民主党に投票させようと画策している。
 在日韓国・朝鮮人の大部分は、戦後のドサクサで密入国した不法滞在者とその子孫だが、強制連行されたとウソをついて被害者のフリをし、日本国内に居座って税金も払わず、毎月二十数万円の生活保護をもらい、ぶらぶら遊んで暮らしている。
219NAME IS NULL:2005/08/26(金) 23:55:45 ID:???
>>217
マニュアルくらい読んでからバックアップしようね
220NAME IS NULL:2005/08/27(土) 04:44:49 ID:xofK+FfR
Windowsネイティブなポスグレたんの嫌な所はありますか?
221NAME IS NULL:2005/08/28(日) 20:56:05 ID:???
pdAdminVでバックアップしようとしてるんですけど、
バックアップしたものをリストアしようとすると
文字化けでエラーになってしまいます。
テーブルの文字コードがEUC_JPなのでそれが原因だとは
思われるのですが、EUC_JPのテーブルをpdAdminでバックアップ
するのは無理なんでしょうか?
222NAME IS NULL:2005/08/28(日) 22:11:49 ID:???
>>220
今のところずっと使ってるが特に問題は出てないな
223NAME IS NULL:2005/08/29(月) 11:41:29 ID:???
>>222
概ねドーイ
でも、メモリリークしてたりしないかね?
しばらく使ってるとスワップが多発するのだが。。。
一緒に使ってるEclipseかもしれん。
224221:2005/08/29(月) 15:25:19 ID:???
>>223
うちはそういうの無いよ
Eclipseだと思われ。俺はそれ使ってないし
225NAME IS NULL:2005/09/05(月) 23:30:14 ID:???
VB板から回されてきました。

以下コピペ。


VB6で、refreshかけるとwindows上のプロセス(postgreSQL)が増え続けます。
原因は何でしょうか。
ちなみにexe終了すれば増え続けたプロセスは一気に開放されます。

- 環境 -
w2ksp4
vb6sp6
DB:PostgreSQL8.0.3
VB歴3週間

Private Sub Command1_Click()
Adodc1.Refresh          ←このタイミングで増える。
End Sub

Private Sub Form_Load()
Adodc1.ConnectionString = _
"Provider=PostgreSQL.1;Password=postgres;User ID=postgres;" & _
"Data Source=localhost;Location=DB_name" & _
Adodc1.RecordSource = "table_name"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Unload Me
End Sub
226NAME IS NULL:2005/09/06(火) 05:09:21 ID:???
>>225
VBのことなんぞわからんが、単純に接続増やしてるだけなんじゃないの?
増えた分閉じてるのか?
227225:2005/09/06(火) 08:06:10 ID:7nT6CzOz
なにやら、SQLserverだとプロセスが増えつづけるって事は無いらしいんですよ。
なので、ポスグレ固有の何かがあるのかなーとおもいまして。
228NAME IS NULL:2005/09/06(火) 11:32:21 ID:VN8kHZyv
貢献モジュールのFull Text Index が気になってます。

日本語で使えますか?
229NAME IS NULL:2005/09/06(火) 20:40:01 ID:599rx19x
>>227
だから向こうのスレで書いたんだが。
SQLサーバは多分サーバが接続をスレッドで受けるけど、こっちはプロセスで受けてる。

あとはADOとODBCの仕様になるが、ADOのリフレッシュを見ると、開くまたは開きなおすと書いてある。
この開きなおすに閉じる動作が入ってるかを疑って、リフレッシュ前に一旦クローズなんど突っ込んでみては?
230NAME IS NULL:2005/09/06(火) 22:23:06 ID:???
>>229
俺もそう思ったんだが、いちいち閉じてたらリフレッシュ呼ぶ意味がないんだろーなー
231225:2005/09/07(水) 10:34:04 ID:???
>>229
Closeをいれても変化なしです。
というより、
前述のコードではDB接続してるのはRefreshの瞬間だけなので
その前にCloseすることは出来ません。

大本になってるコードがあるのですが
(それはRefreshより前に明示的にConnectionしてある)
そちらで無理やりクローズしたところ
Refreshもされず、その後の動作に異常が発生→エラートラップに引っかかる
といったかんじです。
232NAME IS NULL:2005/09/07(水) 11:40:50 ID:???
>>231
おもしろそうなので、やってみた。
 Postgres8.0.1 → Refreshの瞬間にプロセスが増えてすぐに元に戻る
 Postgres8.0.3 → Refreshの度にプロセスが増え続ける

8.0.2は環境がなかったので未確認。
Postgres本体 or ADOドライバのバグかもね。
Postgres-MLにでも投げてみたら?
233225:2005/09/07(水) 11:53:06 ID:???
>>232
素敵な情報ありがとうございます。

さっそく手続きを行いたいと思います。
234NAME IS NULL:2005/09/08(木) 02:10:28 ID:???
>>228
つかったことないが
ttp://www.oss.ecl.ntt.co.jp/
235NAME IS NULL:2005/09/13(火) 14:55:18 ID:???
基本的なことですみまそん。
8.0をWin2Kに入れたのですが、perlからアクセスする方法がわかりませぬ。

以前使っていたmysqlのときは、
c:\perl\ > ppm
PPM > install DBI
PPM > install DBD-MySQL
というかんじでモジュールを入れたのですが、今回はどういうものを入れれば委員でしょう?

PPM > install DBD-PgSQL
PPM > install DBD-PgSPI
などと当てずっぽうでやってみましたが、not foundですた・・・

よろしくおながいします。
236NAME IS NULL:2005/09/13(火) 15:37:51 ID:???
237NAME IS NULL:2005/09/13(火) 17:39:46 ID:???
↑thx♥



探すの下手な俺orz
238NAME IS NULL:2005/09/21(水) 13:10:14 ID:???
plpgsqlからDOSコマンドの実行できますか?
239NAME IS NULL:2005/10/07(金) 16:50:08 ID:5guy/VMJ
Npgsql使って、.NETからLinux上のPostgreSQLにアクセスしてるんだけど、
server_encodingが"EUC_JP"なので、
日本語を含んだクエリを投げるとエラーが出る↓

ERROR: 22021: invalid byte sequence for encoding "EUC_JP": 0x8341

で、.NET側でEUC_JPに変換してから投げようと思うんだけど、
GetEncoding("euc-jp")で System.Byte[] 型にして、
この先どうしたらいいかわからん。。なんかもう泣きそう

誰か親切な人、教えてください
240239:2005/10/07(金) 17:20:23 ID:???
自己レスです

Npgsqlのドキュメントを読んでいたら、
Connection String parametersの中に Encoding とあった
早速、Connectの接続文字列に「Encoding=Shift_JIS」と設定してやったら
うまく行くようになった。ここまで2日潰したけど_| ̄|○

あぁ、ドキュメントって読むもんだなと思った秋の夕暮れ

.NETからPostgresに接続するなら Npgsql マジでオススメ。
ADO.NET準拠だから OracleClient と同じ感覚で使える。
241239:2005/10/07(金) 21:32:01 ID:???
>>240
書き間違えてました
.NETだから、Shift_JIS じゃなくて UNICODE ですね。
client_encodingで指定してやら無くても、↓こんな感じで逝けます

conn.ConnectionString =
"SERVER=localhost;DATABASE=hoge;ID=hoge;PASSWORD=hoge;Encoding=UNICODE;"
242NAME IS NULL:2005/10/08(土) 06:28:55 ID:???
PostgreSQL 8.0.4 for Windows日本語版、リリース! age
243NAME IS NULL:2005/10/11(火) 15:41:02 ID:jw2nGrQt
postgresql-8.0-ja.msiを使って8.0.3をインストールしたんだけど、
Windows起動後にタスクマネージャー見ると
postgres.exe(5個ぐらい)
pg_ctl.exe
postmaster.exe
って勝手に何個もプロセスが起動してる。

使う時だけ起動したいんだけど、どうするの?

WindowsXP Pro SP2
244NAME IS NULL:2005/10/11(火) 15:50:35 ID:???
>>243
スタートメニューのPostgreSQLのところに、
サービスの起動、サービスの停止ってあるだろ。
使いたいとき以外は、停止させておけばいいよ。
245NAME IS NULL:2005/10/11(火) 16:01:37 ID:???
>>244
起動時に実行させないようにしたいんだけど。
毎回手でスタートメニューからサービス停止をクリックしないとダメぽ?
246NAME IS NULL:2005/10/11(火) 16:23:37 ID:???
>>245
Windowsの基本的な使い方は板違いかと。
「windows サービス 起動 停止」でググってみ
247NAME IS NULL:2005/10/11(火) 16:29:48 ID:???
>>245
ポカーン
248NAME IS NULL:2005/10/11(火) 16:34:42 ID:???
コントロールパネルの管理ツールの「サービス」にあるPostgreSQLのプロパティで、
スタートアップの種類を「手動」に変えれ。
変えた後は、回線切って吊ってこい
249NAME IS NULL:2005/10/11(火) 16:37:47 ID:jw2nGrQt
>>246-248
了解
とりあえず吊ってくる。
それからだな
250NAME IS NULL:2005/10/12(水) 15:16:20 ID:w0CXzOKJ
linux環境でのバックアップで、
vacuumdb , pg_dumpを定期的に実行するシェルを作りました。
いざ実行してみるとvacuumdbでパスワードを聞かれるのでそこでとまってしまいます。
パスワードを聞かれない方法またはオプションから渡す方法はありますでしょうか?
251NAME IS NULL:2005/10/12(水) 15:26:45 ID:???
>>250
そのシェルスクリプト内で環境変数 PGPASSWORD に設定すればオケ。

#!/bin/sh
PGPASSWORD=パスワード
export PGPASSWORD
/path/vacuumdb xxxx とか
/path/pg_dump xxx など
252NAME IS NULL:2005/10/12(水) 16:17:35 ID:yHibahQH
>>251
できませんでした。
ありがとうございました
253250:2005/10/12(水) 18:15:57 ID:???
.pgpassを使う方法でできました。ありがとうございます。
254NAME IS NULL:2005/10/13(木) 03:29:53 ID:???
>>252
cronを実行してるユーザの問題かねえ?
255NAME IS NULL:2005/10/13(木) 03:34:10 ID:???
途中で書き込んじゃった

>>252
cronを実行してるユーザの問題かねえ?
それとも環境変数PGUSER=ユーザ名が無いせいか?
256NAME IS NULL:2005/10/13(木) 16:15:31 ID:???
じつは環境なくて聞きたいんだけど
WindowsXP & VB6
もしくは
WindowsXP & VB.NET2003
からLinuxDBサーバ上にあるポスグレ8に接続する時に
何か特別な事ってある?
Windowsサーバにテストでインスコしたポスグレには普通に繋げてるんだけど・・
257NAME IS NULL:2005/10/14(金) 00:24:27 ID:???
>>255
じつは8.0とか8.0.1を使っているとか
258NAME IS NULL:2005/10/16(日) 06:50:40 ID:???
>>256
外部から接続できるように設定汁
259NAME IS NULL:2005/10/16(日) 10:41:48 ID:???
ヒント:pg_hba.conf
260NAME IS NULL:2005/10/17(月) 17:37:35 ID:???
>258
>259
「Windowsサーバにテストでインスコしたポスグレには普通に繋げてるんだけど・・」
ということなので、その辺はクリアしている、と思いたい。
であれば「何か特別な事」はない。
261NAME IS NULL:2005/10/18(火) 03:03:22 ID:???
>>260
Win鯖に接続って同一PC上でやってるだけだと思うけどな
質問者が戻ってこないのできっとうごいたんだろ
262NAME IS NULL:2005/10/18(火) 12:15:19 ID:???
>>261
クライアント環境がWinXPってあったからさ・・・
XPシリーズにサーバーってないっしょ。

どうでもいいか。動いたんだろ。
263NAME IS NULL:2005/11/20(日) 06:34:04 ID:2zcdASaW
どうしてもインストールできません。

postgresql-8.1-ja.msiを起動して、
任意のアカウント入力後
パスワードを入力してインストールを開始すると、

「内部のアカウント探索に失敗しました:アカウント名とセキュリティID
の間のマッピングは実行されませんでした」「致命的なエラー」

とエラーが出てインジケータが逆戻り。
アカウントはPC管理者権限のものでも試してみてもダメです。
どなたか分かる方いたら教えてください。
264263:2005/11/20(日) 06:35:53 ID:???
OSはwindowsXP Home です。
265NAME IS NULL:2005/11/20(日) 07:01:04 ID:???
>>263
Administrator権限がないユーザでWindowsにログインしてない?
266263:2005/11/20(日) 08:25:09 ID:???
ログインユーザは「コンピュータの管理者」になってます。
267NAME IS NULL:2005/11/20(日) 08:36:58 ID:aQbjk/iW
>>263
同じ経験あり
俺の場合、専用のユーザ作った
どうもAdminユーザではPostgres起動できないみたいなことをどこかで読んで(つーかインストール時にでてくるエラーで、俺はそう言う意味に読み取ったんだよたしか)
専用のユーザ作って、インストール時にでてくるユーザ入力欄にそのユーザ入力して(つーか最初からpostgresになっているはず)インストール成功
で、その後は普通にAdminユーザでもなんでもPostgres起動できるわざわざ作ったユーザでなくてもOK
どうも、こういう経緯でインストール成功したということで単純に「Windowsのユーザ作成(postgresユーザ)」に失敗しているとしか思えない

それはそうと、このスレの下にあるPostgresのスレの748なのですが誰かわかる人いたら教えてください(泣
268263:2005/11/21(月) 23:23:05 ID:BD+L+6jB
レスありがとうございます。
でもアカウントの作成はやっぱりできませんでした。

XPのユーザーアカウントを新規作成
→Postgresのサービスアカウント名欄に新規作成したXPのアカウント名を入力。
→Postgres内部のサーバー管理用アカウントにpostgresを入力

エラー
「内部のアカウント探索に失敗しました:アカウント名とセキュリティID
の間のマッピングは実行されませんでした」

サービスアカウントのユーザ名と、Postgres管理用アカウント(postgres)を
入れ替えてみてもダメ。両方を同じアカウント名にすると
「アカウント名が既に生成されています〜」という旨のエラーが出て失敗。
ドメイン名に問題があるのかなんなのか…原因が分かりませんでした。

そこで、インストール画面の途中に出てくる「サービスアカウントを作成する」のチェックボックスを
オフにしたところ、何の問題も無くインストールすることができました。
ホントはダメなんでしょうけど、個人でのローカルな使用なので無事インストール完了ということで…
269NAME IS NULL:2005/11/22(火) 13:54:09 ID:???
PCのユーザーとPostgresのユーザーがあるんだよ
こんなもん、わかってればなんてこと無いんだけど
ユーザー管理したこと無いとひっかかるもんなんだな
270NAME IS NULL:2005/11/22(火) 14:01:44 ID:???
でもあのインストーラのメッセージは分かりにくい希ガス
知り合いも一度セットアップに失敗した後
ユーザーの問題でずっと失敗し続けていた
271 :2005/11/24(木) 23:53:37 ID:???
Postgres SQL CEってどうですか。できたばかりだけど
ORACLEマスターのように無駄に費用かけるより、
この資格とってとりあえずDBのスキルとするほうが懸命に思えてきた。
272NAME IS NULL:2005/11/25(金) 00:17:29 ID:???
とりあえずDB使ったアプリをガンガン作るほうがいいかも
業務系みればいくらでも
273NAME IS NULL:2005/12/15(木) 18:40:30 ID:+ouoDcGk
age
あがってけろ
274NAME IS NULL:2005/12/16(金) 07:08:13 ID:vm7yBoZ9
SELECT DISTINCT col FROM tbl;

これ、colに入ってるのが半角だったらうまく通るんだけど、マルチバイト文字だと
重複したレコードが帰ってきてしまう。

これって、設定とかで回避できるんですかね。
ちなみに、Windows用の8.0.1です。
275NAME IS NULL:2005/12/16(金) 09:26:17 ID:???
>>274
おそらくロケールがC以外になってると思う
no-localeでdb作り直すと治る
276NAME IS NULL:2005/12/16(金) 09:46:29 ID:???
>>275
サンクス!
やってみます。
277NAME IS NULL:2005/12/21(水) 16:21:46 ID:8BF8onPp
語ろうのほうにも質問投げたのですが、こっちの方が良さそうなので。。。

一度インストールして運用してたDBを別のDBにデータごとコピーしたいんですがどうすればいいでしょうか?
OS入れなおしたせいで、ソフトは入ってない状況になってます
ちなみにOSはwindows2kです

インストール→フォルダをコピー
とかでいけそうな気はするんですけど、誰か情報もってませんか
278NAME IS NULL:2005/12/21(水) 19:01:17 ID:???
OSとCPUとPostgreSQLのバージョンが同じならコピーでいける
そうでないなら、同じ条件のPostgreSQLを入れなおして
そのフォルダをpg_dump等でダンプしてテキストファイルに落とせば
任意のPostgreSQLに入れなおしできる
279277:2005/12/21(水) 21:57:59 ID:???
>>278
CPUもOSも変えてしまいました・・・
いったん同じ環境用意してやるしか方法ないですかね?
280NAME IS NULL:2005/12/21(水) 22:37:09 ID:???
とりあえず、同じバージョンの postgresql 入れて、
フォルダをコピーしてみろ。

linux だといける。
win はしらんが、でもたぶんいけるだろ。
281277:2005/12/21(水) 23:01:07 ID:???
サービスをとめてPostgreSQLフォルダをコピペしてみましたがサービスを再起動しようとすると落ちてしまいダメでした

どこか設定ないか調べてみます・・・
282NAME IS NULL:2005/12/21(水) 23:04:10 ID:???
先にコピーしてから、インストールするんだよ〜。
283277:2005/12/21(水) 23:16:01 ID:???
>>282
やってみます!
先にPostgreSQLフォルダごとインストールフォルダに突っ込んで
上からインストールすればいいんですよね?
284277:2005/12/21(水) 23:50:19 ID:???
できました
インストール途中一回質問が増えたけどそれ以外は問題なくインストールできました
ありがとうございます
285NAME IS NULL:2005/12/22(木) 12:29:50 ID:???
PostgreSQL は Solaris の一部になりますた。
ttp://jp.sun.com/
286NAME IS NULL:2006/01/19(木) 18:13:25 ID:WGWyvXts
PostgreSQL 8 に附属している ODBC ドライバをつかって
データベースに接続する Winアプリを作っています.

Visual Studio 2003 環境で製作しているアプリの中で
データベースに SQL を飛ばすところで
TRACE を表示するコンソールに

Warning: ODBC Success With Info on field 4.
The buffer was too small for the GetData.

というのが大量に出て,
アプリがかたまってしまう症状に困っています.

Web で検索しても情報がなく
どのように対処すればいいのかわかりません
287NAME IS NULL:2006/02/03(金) 17:02:27 ID:???
どうなった?
288NAME IS NULL:2006/02/06(月) 08:17:28 ID:???
解決しますた
289NAME IS NULL:2006/02/06(月) 09:21:39 ID:???
>>288
それだけかよ!もっとkwsk
290NAME IS NULL:2006/02/06(月) 10:25:18 ID:???
Windows環境で テーブル空間を任意で作成するにはどうすんだ?
291NAME IS NULL:2006/02/06(月) 10:36:36 ID:???
ん?TABLESPACEのこと?
非Windowsと同じやりかたでできるけど。

path指定が、'C:\\foo\\bar' みたいになるけどな。
292NAME IS NULL:2006/02/06(月) 10:47:26 ID:???
>291
ありがと。

バックスラッシュはエスケープってことか。
ついでに自爆、ディレクトリのセキュリティ設定でひっかかって。。。。orz

293NAME IS NULL:2006/02/06(月) 12:44:51 ID:???
'C:\\foo\\bar' で実験したら、中身は C:/foo/bar って入ってるな。
もしかしたらどちらでもいけるのかも。
ドライブ名はどうなるかなあ
294NAME IS NULL:2006/02/17(金) 11:59:02 ID:72xXMt8e
8.0から8.1へアップデートする方法を教えて下さい。windows 2000 serverです。
295NAME IS NULL:2006/02/17(金) 12:12:16 ID:???
Win版に限らないけど、

pg_dumpall > filename
サービスの停止
8.1のインストール
initdb
起動
psql < filename

の手順でできます。
296NAME IS NULL:2006/02/17(金) 15:19:43 ID:72xXMt8e
8.0のpgadminVでバックアップとって8.1のpgadminVでリストアしても同じになりますか?
297NAME IS NULL:2006/02/17(金) 15:26:59 ID:???
まったく同じじゃないけど、DBごとに個別に取って、新しいほうで作成してリストアすれば
ほぼ同じかな。ユーザーとかTABLESPACEとかは手作業でやるのなら。
298NAME IS NULL:2006/02/18(土) 01:31:48 ID:???
299NAME IS NULL:2006/02/18(土) 16:39:40 ID:???
8.1.3でたな
300NAME IS NULL:2006/02/22(水) 17:54:07 ID:A0xJBZ7m
こんばんわ。色々ありがとうございます。
8.0→8.1へのアップデートですか、pgadminVでバックアップとってリストアしたら
出来た様子です。
リストア中に色々メッセージが出てきたのですが、8.1のデータベースの内容が8.0と同じに
なったのでよしとします。
301NAME IS NULL:2006/03/09(木) 17:45:29 ID:???
IDENTITYが使えないみたいですが
代わりになる機能ってあります?
302NAME IS NULL:2006/03/09(木) 17:53:13 ID:???
SEQUENCE かな。
CREATE TABLE 時には SERIAL を指定すればいい。
303NAME IS NULL:2006/03/09(木) 18:01:27 ID:???
>>302
ありがとうございます
304NAME IS NULL:2006/03/18(土) 21:13:31 ID:sa7ItIyD
adminVに接続できません。サービスの開始をしたのですが、
「指導的ヒントーサーバーは閉じています。」となってしまいます。
初心者で申し訳ありませんが、どうか、解決策を教えてください。
305NAME IS NULL:2006/03/20(月) 03:06:51 ID:???
それだけだと原因はいくつか考えられるけど、
試しにサーバ名をlocalhostでやってみるとどうなる?
306NAME IS NULL:2006/03/21(火) 20:51:49 ID:TsAQfPS2
それでも、だめでした。一度、再インストールして起動できたのですが、
一日たつと、また「サーバーの接続に失敗しました」で「指導的ヒントーサーバーは閉じています。」
と出てしまいます。
307NAME IS NULL:2006/03/21(火) 22:12:37 ID:???
情報が少なすぎるんだって
localhostでOKならpg_hba.confかpostgresql.confだし
ダメならファイヤーウォールかサーバー起動してない
と言えるが、前はつながった、とかじゃそれも言えない

つながった時から何も変えてないんだよな?
まずサービス動いてるか確認してくれ
308NAME IS NULL:2006/03/22(水) 23:21:37 ID:Io+T3q8U
サービスは「サービスの開始」で完了にはなります。
何が原因なのかほんとさっぱりで。
309NAME IS NULL:2006/03/22(水) 23:37:47 ID:XOjDI7em
>>308
お前解決する気ないだろ?
310NAME IS NULL:2006/03/23(木) 10:04:46 ID:???
マイコンピュータの右クリックで管理を選び、
「サービスとアプリケーション」からサービスを選び
PostgreSQL Database Server X.X.X というとこを探して
状態が「開始」になってるか確認するんだよ。

netstat -a とか -an とか -aon で5432ポートでLISTENしてるか確認してもいい
311NAME IS NULL:2006/03/23(木) 21:00:17 ID:1XjPFJqa
すいません、無知で。
見たら、停止になってて開始にしてもならないです。
312NAME IS NULL:2006/03/23(木) 21:03:34 ID:1XjPFJqa
「起動して停止しました。パフォーマンス・ログ・警告サービスなど、
一部のサービスは作業がない場合に自動的に停止します。」と出ました。
313NAME IS NULL:2006/03/23(木) 21:47:47 ID:???
>>311
教えて君のガイドラインでも参考にしてんのか?
君には脳みそついてるか?
検索の仕方知ってるか?
314NAME IS NULL:2006/03/23(木) 22:18:54 ID:1XjPFJqa
何の検索??
315NAME IS NULL:2006/03/24(金) 09:42:01 ID:???
とりあえず、調べるとこはいくつかあるけど
めんどくさいから再インストールしたほうが・・
316NAME IS NULL:2006/03/24(金) 22:50:08 ID:qWPzMu34
わかりました。
丁寧に答えていただき、ありがとうございました。
317NAME IS NULL:2006/04/03(月) 17:34:21 ID:???
これ何て病気?
318NAME IS NULL:2006/04/03(月) 20:46:26 ID:???
コレラ
319NAME IS NULL:2006/04/04(火) 10:30:36 ID:???
トンコレラって今でもあるの?
320NAME IS NULL:2006/04/20(木) 15:31:35 ID:16+K09io
PostgreSQL 8.0.3 Windows版で問題なかったのですが、
PostgreSQL 8.1.3 Windows版だと、

VB6 SP6 で、

-----------------------------------------
Dim WithEvents adoPrimaryRS As Recordset
-----------------------------------------
上記のようにADOを利用し、下記の
-----------------------------------------
adoPrimaryRS.UpdateBatch adAffectAll
-----------------------------------------
を実行する個所で、

『更新に必要なベース テーブル情報が足りません。』
が、出てしまいます。

ADOのRecordset での、SELETなど参照は問題ありません。
INSERTやUPDATE文をExecute発行する場合は、問題ありません。

どなたか、ご存知の方いますか?
同様に再現しますか?

commit でデータが失われるバグの可能性は、怖いけど、
しばらくは、8.0.3 のままで利用するしかないなぁ。。。

ベーステーブル情報っていう意味もよくわからない。。。(^^;
321NAME IS NULL:2006/05/05(金) 04:38:44 ID:hFm972qW
みなさんはバックアップってどんな形でやってます?
pg_dump or pg_dumpall or その他、など。

pg_dump -c と pg_dump -s の組み合わせて取っているんですが、
他にどんな運用の仕方があるかな?と思って。

Restore も実施して確認はしているのですが、本当の障害にぶち当たったことが無く、
実戦経験のある方の意見としてはどうでしょうか?
322NAME IS NULL:2006/05/05(金) 04:39:30 ID:???
×pg_dump -s
○pg_dumpall -s
でした。ごめんなさい。
323NAME IS NULL:2006/05/26(金) 19:05:06 ID:4SSfJU7w
324NAME IS NULL:2006/06/09(金) 14:11:05 ID:3rf6lNcE
>>320
自己レスです。
PostgreSQL 8.1.4 Windows版 でも修正されていないようです。
早く修正してくれよぉ。。。(T_T)
325NAME IS NULL:2006/06/09(金) 19:26:52 ID:???
>>324
そう思うならここより、本家かMLかにでも投稿したほうがいいかと
326NAME IS NULL:2006/06/09(金) 19:30:35 ID:???
>>320 >>324
貴重なフィードバックありがとうございました。
本日バグフィックスに取り掛からせていただきます。
来週リリース予定のパッチに間に合うかと思います。
327NAME IS NULL:2006/06/09(金) 22:46:10 ID:???
>>326
ん?ほんとに関係者?
せめて、トリップつけるか名前名乗ったら?
328NAME IS NULL:2006/06/12(月) 06:05:47 ID:lad+ZLVd
デグレード、すんなよ!~ヽ('ー`)ノ~
って言いたい。

デグレードくらい、早ょ、自分で気づけよっ(*´З`)
329NAME IS NULL:2006/06/13(火) 19:48:23 ID:???
ODBCの問題では
330NAME IS NULL:2006/06/29(木) 13:37:09 ID:???
DBファイルの場所指定ってどこ
331NAME IS NULL:2006/06/29(木) 14:06:06 ID:???
3丁目4番13号
332NAME IS NULL:2006/06/30(金) 15:17:21 ID:???
場所は起動時に指定するでしょうが。
333NAME IS NULL:2006/06/30(金) 19:43:22 ID:???
東江戸川3丁目
334NAME IS NULL:2006/07/03(月) 14:25:05 ID:???
おじゃまんが山田君かよ
335NAME IS NULL:2006/07/03(月) 17:02:25 ID:???
ODBCの接続経路の設定ってどこでするのでしょうか?
GOOGLE MAPで探したのですが、見つかりませんでした。
336NAME IS NULL:2006/07/03(月) 19:47:42 ID:???
yahoo路線情報で出発駅と到着駅を指定してください。
さすれば、経路を表示してくれます。
ときどき遠回りな経路を選択することがありますが、
到着できないことは無いので、気にする必要はないでしょう。
337NAME IS NULL:2006/07/13(木) 12:43:33 ID:MswwkVXJ
>>163
と同じ現象なのですが、%windir%\system32 にパスを通すとはどの様に
すればいいのでしょうか??教えて下さい。<(_ _)>
338NAME IS NULL:2006/07/13(木) 12:48:37 ID:???
>>337
普通 %windir%\system32 にパスは通っていると思うけど。
cmd で echo %PATH% ってしてみ?
339NAME IS NULL:2006/07/13(木) 14:56:14 ID:???
%windir%\system32\more.com
が無いのかも??

ちなみに、 %windir% は多くの場合XPでは C:\Windows\
340NAME IS NULL:2006/08/22(火) 19:20:27 ID:Nir9JARk
pgAdminVを使っているものです。
テーブルへデータを挿入したあと、Enterキーを
押すとそのつどエラーが生じます。

いったいなぜなんでしょう?初心者ですみません。ご教授ください。
341NAME IS NULL:2006/08/22(火) 20:11:38 ID:???
どういうエラーよ
エンターをどこで押したかによるけど
次のレコードにカーソルが移動してて、そこに空のレコード入れようとしたとかじゃないのかな
342NAME IS NULL:2006/08/22(火) 20:38:03 ID:k5T9Sk6n
Fedora 5 とPostgreSQL8.1.4を使用しています。
とあるアプリを入れようとすると、libpq.so.3が見つからないと叱られます。

ネットを適当に検索すると、libpq.so.3は7.4系列でないとインストールされないというレスもあるのですが、本当でしょうか?
343NAME IS NULL:2006/08/23(水) 09:48:33 ID:???
>>342
8.1.0 には3.1があるみたいだけど、8.1.2では4.0になってるみたいだな。
PG_HOME/lib はどうなってんの?
344NAME IS NULL:2006/08/23(水) 10:11:01 ID:ailSN2Wm
>>341

エラーが起こりました:
ERROR: array value must start with "{" or dimesion information

というエラーです。
345NAME IS NULL:2006/08/23(水) 11:23:10 ID:???
>>344
それは配列型のカラムがあるんじゃない?
配列方の入力は、{} で囲む。
{1,2,3} とか {'a','b'} とか。項目1つでも必要
346NAME IS NULL:2006/08/23(水) 11:23:50 ID:ailSN2Wm
◎部署表 レコード挿入時エラーなし
×社員表 レコード挿入時エラーあり(改行できない)
347NAME IS NULL:2006/08/23(水) 11:56:54 ID:ailSN2Wm
社員表レコード構成
社員コード int4
社員名   text
部署コード int4
朝礼担当日 date

どれが配列型でしょうか?
348NAME IS NULL:2006/08/23(水) 12:07:29 ID:???
>>347
配列は、後ろに [] がついてるはずだが、、、(int4[] とか text[] とか)
もしかしてバージョンの違いとかでおかしくなってる?
349NAME IS NULL:2006/08/23(水) 12:41:20 ID:ailSN2Wm
探してみます。
350NAME IS NULL:2006/08/23(水) 12:43:02 ID:ailSN2Wm
date型が配列でした。
351NAME IS NULL:2006/08/23(水) 12:45:55 ID:ailSN2Wm
良かったです。ご指摘の通り、date[]型の列に
{2006/02/12}と入力したら{2006-02-12}で格納できました。
改行も出来ました。ありがとうございます。>>348
352NAME IS NULL:2006/08/23(水) 13:15:46 ID:m1i6bZ4E
>>343
8.1.0をsrcよりbuildしてみたけど、libpq.so.3では無く、libpq.so.4になったましたです。
353NAME IS NULL:2006/08/23(水) 14:43:57 ID:???
とあるアプリをldd で見ると直接 libpq.so.3.0 を見てるの?
リンク貼ってごまかせんかな
354NAME IS NULL:2006/08/23(水) 15:17:59 ID:???
>>353
そうですね。
「libpq.so.3 => not found」と表示されます。

どこかから適当にlibpq.so.3を引っ張ってきて、PG_HOME/libに放り込むというのは,,,ダメなのでしょうか。
355NAME IS NULL:2006/08/23(水) 15:33:25 ID:???
コンパイルできるなら、7.4.Xをコンパイルしてlibだけもってったら?
7.X と8.0、8.0.Xと 8.1.X はかなりかわってるので、元ソフトをなんとかしたほうがいいような
356NAME IS NULL:2006/08/23(水) 16:01:03 ID:???
>>355
了解です。その方向で攻めてみます。

でも、そのソフトは8.1.Xで動くらしいのですよ。
いい加減な作り方をしたのかなぁ...?
357NAME IS NULL:2006/08/26(土) 17:10:28 ID:dqbcAN+3
クライアント側はネイティブのX86-64の64ビットソフトウエアで動かすことは
できますか? 最近Postgreに浮気しようかと考えています
358NAME IS NULL:2006/08/27(日) 12:03:50 ID:???
クライアントとは、具体的にどれのことを言ってるの?
359NAME IS NULL:2006/08/28(月) 15:34:02 ID:???
8.1.3について、質問させてください。
「PostgreSQLの構築時、スレッドセーフは有効にして下さい。」
との指示を受けたのですが、いまいち該当する文書が見つかりません。
これはいったい何をせよということでしょうか。
360NAME IS NULL:2006/08/28(月) 16:07:15 ID:???
>>359
構築ってコンパイルのことでしょ?
configure のオプションに入れる
--enable-thread-safety の事じゃないのかな?
361NAME IS NULL:2006/08/28(月) 16:10:29 ID:???
>>360
なるほど。そういうオプションがあるのか。ありがとうございます。やってみます。

つか、DBなんてそもそもスレッドセーフなのかと思ってました。
362NAME IS NULL:2006/08/28(月) 16:20:50 ID:???
ここでスレッドセーフになるのはクライアント用のライブラリ類だからねえ
過去の互換性でこうなってるのかもね。
363NAME IS NULL:2006/08/28(月) 20:22:44 ID:X2MvAZKe
POSTgreSQLのデータを、PHPで表示させたいのですが、
どうしても文字化けします。
postgresql.confやphp.iniの内容を書き換えたり
pgAdminVのバックエンド構成エディタでpostgresql.conf
の内容を書き直してもどうしても、文字化けします。
psqlでset client_encodingを使ってデータを挿入しても文字化けします。
phpファイルの中でmb_convert_encoding($変数,"EUC-JP","SJIS")関数を使っても、
やっぱり文字化けします。
データベースの内容をwindowsのブラウザで表示させようとするとどうしても
文字化けします。
いったいどうしたらよいでしょうか?
364NAME IS NULL:2006/08/29(火) 00:20:30 ID:???
>>363
文字化けしないようにしたらいいよ
いらないことばっかり書いて情報すくなすぎ

DBの文字コードは何になってんの?
DBに格納されてるときのデータはよめてるの?

エンコード・でコードしてもだめ?
365NAME IS NULL:2006/08/29(火) 01:19:28 ID:7wbP8C3M
>>364
DB文字コード=UNICODE 
DB文字コード=EUC-JP
(どちらでも以下を試しました)


mb_convert_encoding($変数,"EUC-JP","SJIS");


mb_convert_encoding($変数,"EUC-JP","UTF-8");


なにもしない→文字化け


mb_convert_encoding($変数,"EUC-JP","SJIS");


mb_convert_encoding($変数,"SJIS","UTF-8");


mb_convert_encoding($変数,"SJIS","EUC-JP");

postgreSQL.confの内容
client_encoding = euc-jp ハイフンをアンダーバーに変えても試した。

それと、pgAdminばかり利用していてDOS上から接続する方法がわかりません。
どうか教えてくれたらと思っています。
366NAME IS NULL:2006/08/29(火) 03:55:52 ID:???
>>365
pgadminで、テーブルのぞいてみた?
ちゃんと文字化けせずに格納されてる?
367NAME IS NULL:2006/08/29(火) 10:01:52 ID:aTAQZsLR
>>366
格納されてます。
psqlでも格納してみたんですが、どちらも
ちゃんと文字化けせずにDBに格納されてます。
時間かかるけど、表を作って確認してみます。
368367:2006/08/29(火) 15:56:28 ID:aTAQZsLR
ブラウザでEUCエンコードすると、ちゃんと日本語で表示されます。
369NAME IS NULL:2006/08/30(水) 02:34:29 ID:???
>>368
PHPは何で書いてるの?DW?
370NAME IS NULL:2006/08/30(水) 16:30:04 ID:LNqquF8S
pgAdminで起動すると
C:\Documents and Settings\xxx\Application Data\postgresql\pgpass.conf' をオープンできません
(エラー 3: 指定されたパスが見つかりません。)
て出るんだけど、解決法を教えてください。
CじゃなくてDに入れているのですが・・・
371NAME IS NULL:2006/08/30(水) 16:59:49 ID:???
DドライブにDocuments and Settingsを作ってそれに変更して使ってるってこと?
インストールしてから移動したのなら入れなおせばいけるかと
372NAME IS NULL:2006/08/30(水) 17:04:27 ID:???
PostgreSQLで「大文字小文字を区別してスキーマを作成してくれ」との指示をうけました。
SQLを試してみたところ、大文字小文字の区別をされないようだと思ったのですが、pgAdmin IIIのGUI「新しいスキーマ」を作成すると、
「Foo」と「foo」を作成することが出来ました。

これは、これでいいのでしょうか?
もう少しスマートなやり方をご存じのかた、教えてください。
373NAME IS NULL:2006/08/30(水) 17:07:48 ID:???
>>372
他のスレで書いた気がするが、バックエンドを経由するときに統一される。
区別させたいなら "" でくくる。
pgAdminIIIは、一部それをやってくれる。
374NAME IS NULL:2006/08/30(水) 17:12:30 ID:???
>>373
おおお。ありがとうございます。
勉強になりました。
375372:2006/08/31(木) 22:59:40 ID:???
>>373
ちょっと作業が落ち着いたので、関連スレを頭から眺めてます。
>>97-98にあったのですね。失礼しました。
376NAME IS NULL:2006/09/01(金) 15:44:48 ID:???
文字コード:UTF-8のPostgresに検索をかける簡単なウェブアプリを作ろうと思うのですが、やはり親和性が高いのはPHPになるのでしょうか。
377NAME IS NULL:2006/09/01(金) 16:09:23 ID:???
親和性とかより、自分の使いやすいやつで選べばいいのでは。
1から覚えるならPHPもありかもしれないが。
378NAME IS NULL:2006/09/01(金) 16:45:36 ID:???
C#やPythonは使ったことがあるんだけど、Web系はさっぱりなのです。
文法的にはJavaが一番取っつきやすそうだけど、大仰かつリソース食いな雰囲気があるし...。

関係ないけどNpgSQLの配布サイトがつながんネ('A`)
379NAME IS NULL:2006/09/01(金) 18:28:33 ID:???
それならたしかにjavaはとっつきやすそう。
CっぽいPHPもそんなに困らないかもしれない。

まあどれ使うにしても慣れないと環境作るまでが大変だけど。
380NAME IS NULL:2006/09/03(日) 19:22:30 ID:IFPR3xSl
既知の致命的バグを教えて
381NAME IS NULL:2006/09/04(月) 00:46:21 ID:???
>>380
それを知ってどうする気だ?
382NAME IS NULL:2006/09/04(月) 00:49:38 ID:???
直してくれるんだよ。
383NAME IS NULL:2006/09/04(月) 11:25:36 ID:???
よほどのことが無い限り、致命的バグが明らかにした時点で対策は取られてるけどね...。
384NAME IS NULL:2006/09/13(水) 16:14:17 ID:Xw0MIhwz
SybaseからPostgreSQL8.1にSQLを移植しています。
日付の取り扱いについて教えていただければと思います。

・データベースに格納されている値
Integer : 1970-01-01 09:00:00 からの経過秒数

・やりたいこと
上記をyyyy-mm-dd hh:mm:ssで得たい。(SELECT文の中で使用する)

・以前は下記のような形式で得ていました。
DATEADD(SECOND,項目名,'1970/01/01 09:00:00')

よろしく、よろしくおねがいいたします。
385NAME IS NULL:2006/09/13(水) 18:22:29 ID:???
'1970/01/01 09:00:00'::TIMESTAMP + '秒 SEC'::INTERVAL

とかでどう?
386385:2006/09/13(水) 18:30:56 ID:???
って、to_timestamp() ならそのままだった

SELECT to_timestamp(SECOND) FROM ・・・

でOK
387385:2006/09/13(水) 18:43:30 ID:???
上の例だと、項目名か。
SELECT to_timestamp(項目名) AT TIME ZONE 'GMT' ・・・
みたいにタイムゾーンは替えることができます。
388NAME IS NULL:2006/09/13(水) 19:35:00 ID:???
>>385-387
ありがとうございます。明日出勤したら試してみます。
定時退社するとビールが美味いです。
389NAME IS NULL:2006/09/14(木) 10:45:03 ID:GsHXk29u
>to_timestamp(項目名) AT TIME ZONE 'GMT-9:00'
これで、どうやら正しい値を表示する事ができました。ありがとうございました。
--日本のタイムゾーンはこれでいいんだよね...。

疑問なのですが、この書式には'1970/01/01 09:00:00'が何故含まれていないのでしょうか。
390NAME IS NULL:2006/09/14(木) 15:02:38 ID:???
to_timestamp() の仕様が、UNIX時刻からTIMESTAMPを返す、という関数だから。

UNIX時刻とは、1970-01-01 00:00:00GMT からの経過秒のこと。
日本時間だと、1970-01-01 09:00:00JST ですね。
デフォルトがこうなってるなら、タイムゾーン指定無くても-9時間になりますよ。
391NAME IS NULL:2006/09/14(木) 15:49:43 ID:???
>>390
ありがとうございます。実に勉強になりました。
そうか、根拠の無い定数値ではなかったんだ。。 恥ずかしス
392NAME IS NULL:2006/09/21(木) 11:14:02 ID:EUAu1HPF
Delphi6〜2006 で PostgreSQL8を使っている人ありませんか?
どんなコンポーネントを使うのが、いいのでしょうか?
393NAME IS NULL:2006/09/27(水) 11:41:11 ID:LTQRh5dB
質問させてくださいな。
データベースファイルの場所を指定して、さらにデフォルトのport以外で接続するようにしたいと考えています。
新規作成する場合はcreatedbのオプションを指定するだけで、特にpostgresql.conf等の設定は必要ないのでしょうか。

また、接続ポートを変更する事でありがちな「困ること」ってありますか?
394NAME IS NULL:2006/09/27(水) 12:05:23 ID:???
>>393
createdb のオプションはすでに起動しているPostgreSQLのポート指定ですよ。
そしてそのポートは、postgresql.confで設定するんですよ。

変えて困ることは特に無いですね。デフォルトを前提にしてるやつがいなければ。
395NAME IS NULL:2006/09/27(水) 12:27:02 ID:???
>>394
レスありがとうございます。参考になりました。
なんか自分いろいろ混同してるみたいなので、マニュアルもいちど読んできます。
396NAME IS NULL:2006/09/27(水) 13:45:21 ID:???
ポート変えたければ、initdb でpgdataの場所を変えてやって
その場所にあるpostgresql.confのポートを変えればいいよ
当然、pg_ctl で複数起動する必要がある
397NAME IS NULL:2006/09/27(水) 14:11:19 ID:???
>>396
複数?
398NAME IS NULL:2006/09/27(水) 14:14:02 ID:???
今あるポートを残したまま、別のポート使いたいんだと思ったので
複数と書いた。
399NAME IS NULL:2006/09/27(水) 14:54:45 ID:???
>>398
あ、違います。
デフォの5432を塞いで、別のポートで通信を行おうとしているのです。
400908:2006/09/27(水) 21:41:11 ID:???
>>396
補足。その場合には-Dでクラスタの所在を指定すること。
401NAME IS NULL:2006/09/29(金) 18:24:40 ID:l4uDq3y5
402NAME IS NULL:2006/10/06(金) 13:37:50 ID:FCgsBt/i
重複キーが発生すると、
インサートがまるっきり出来ないんですね。
知らなかった。
ショック大。
403NAME IS NULL:2006/10/06(金) 15:32:46 ID:???
もしまったくの別データなのであれば、デュプリケートありにしとけばいいのでは
プライマリだと無理だが
404NAME IS NULL:2006/10/06(金) 16:24:14 ID:FCgsBt/i
ACCESSからの移行なので、
SQLサーバーEXPRESSにしようと思っていたのですが、
フリーならPOSTGREが良いとソフト屋さんが言うので、
いろいろ検証してて今日わかったのです。
SQLにした方が無難そう。
405NAME IS NULL:2006/10/06(金) 17:57:46 ID:???
デュプリケートキーありの設定をしないでINSERTできるDBなんて無いと思うんだが?
SQLサーバーで同じ目にあうぞ
406NAME IS NULL:2006/10/06(金) 18:47:17 ID:FCgsBt/i
インサート出来ないのはキーが重複しているデータで、
それ以外のデータは受け入れて欲しいのです。
MSDEとかでテストしていたときは、
そこら辺の動きが、
ACCESSと同じだったと思うのですが、
POSTGREだと、
重複しているデータもしていないデータもまとめて、
何も入らなかったので、
驚いただけです。
おまけに止まってしまうし。

でも使い方に慣れていないせいもあると思いますので、
もう少し研究します。

ご指導、
ありがとうございました。
407NAME IS NULL:2006/10/06(金) 21:17:56 ID:???
auto commitを理解できていないような気がする。
408NAME IS NULL:2006/10/08(日) 08:14:37 ID:Xqm4zc5y
auto commit?>>407
至急調べて勉強します。
ありがとうございました。
409NAME IS NULL:2006/10/10(火) 14:34:51 ID:???
>>402 はどうやってINSERTしたの
トランザクション内でなら当然全てキャンセルされる。
410NAME IS NULL:2006/10/10(火) 23:22:24 ID:???
PostgresってDBのクラスタリングできる??
411NAME IS NULL:2006/10/10(火) 23:40:13 ID:???
412NAME IS NULL:2006/10/11(水) 01:03:16 ID:???
クラスタリングって何が向上するの?信頼性だけ?
HDDでいうとこのRADE1とかと同じ感じ?
413NAME IS NULL:2006/10/11(水) 21:07:13 ID:???
>>RADE1
>>RADE1
>>RADE1
>>RADE1
>>RADE1
>>RADE1
>>RADE1
>>RADE1
>>RADE1
>>RADE1
414NAME IS NULL:2006/10/11(水) 23:18:51 ID:???
じゃあRAID1。つづりぐらいどうでもええやろ。
415NAME IS NULL:2006/10/12(木) 16:16:14 ID:JlXlSYD0
>>409
402です。
ACCESSのリンクテーブルを使って、
伝票番号の範囲を1000枚ずつ区切ってクエリーで追加しようとしました。
途中でエラーになったので、
オリジナルのデータを調べたら、
変な文字が商品名のところに見つかって、
その文字をオリジナルから削除して再挑戦しました。
ある程度追加が終わったテーブルですから、
最初っから実行すれば当然重複キーが出ます。
以上です。
416NAME IS NULL:2006/10/12(木) 16:19:16 ID:JlXlSYD0
402です。
ACCESSのデータを一件ずつ取り出して、
POSTGRE側のデータをキーチェックして、
存在してなければ一件だけ書き込むという風に変えました。
今実行中で、
一応動いてます。
ちょっと遅い。
417NAME IS NULL:2006/10/12(木) 16:22:27 ID:???
それがオートコミットだろ
明示的にトランザクションにして全キャンセルさせたほうがよかったね
418NAME IS NULL:2006/10/12(木) 16:59:31 ID:JlXlSYD0
402です。
ちょっと中途半端なやり方になってしまっています。
ACCESSのデータはDAOで一件ずつ読み取って、
そこからキー項目のみを取り出した後、
ODBC接続で ODBC_REC=CN.EXCUTE(SQL)
などとして、
ODBC_RECがEOFなら、
先に取り出したキー項目で、
ACCESSのリンクテーブルのACCESS側から、
同じくリンクテーブルのPOSTGRE側へクエリーで、
キーが一致する一件だけ書き出してます。
ベテランの皆さんが見たら、
ぷっと吹き出しそうな不細工さではないかと思います。
なにせ一件ずつ、
ACCESSのクエリ実行の「.........」が、
高速でちかちかしてますので。
もうちょっと、
考えて見ます。
419NAME IS NULL:2006/10/12(木) 17:03:15 ID:2aaHHgPh
なんでpostgreSQL7.1.2がREDHATのES3にインストールできないんじゃ〜
なんでじゃ〜なんでじゃ〜なんでやねん
420NAME IS NULL:2006/10/12(木) 21:15:24 ID:???
できるでそ。
421NAME IS NULL:2006/10/12(木) 22:37:01 ID:???
なぜそんな骨董品を
422NAME IS NULL:2006/10/13(金) 09:09:25 ID:UZJ+8m5S
>>420
419です。
postgreSQL7.4.3はREDHATのES3に入ったんですよ
でも、7.1.2を入れるためにmakeをすると
途中で終了しちゃって最後まで行われないですよ
make checkも途中で終わっちゃって、
無理やりmake installするとdocとmanしかインストールされないですよ
7.4.3なら入るのに・・・
骨董品といわれても仕様なので・・・
423NAME IS NULL:2006/10/13(金) 09:40:57 ID:???
>>419
多分スレ違いw
ここは8専用でふ。なんで別なのかは知らないけど。
424NAME IS NULL:2006/10/16(月) 12:37:29 ID:???
エラーの内容を書いてくれれば解決できると思うけど
スレ違いならよそでやってるのかな
425NAME IS NULL:2006/10/18(水) 02:13:35 ID:???
そもそもなんで別れてるんだろうね。
pgスレはいっぱいあって、一見さんにはちょっと辛いかな。
2.0Betaとかは別スレで話題になってるし。
426NAME IS NULL:2006/10/18(水) 15:31:53 ID:???
本スレ
PostgreSQLについて語ろう where OID=2::oid
http://pc8.2ch.net/test/read.cgi/db/1136805513/

MLヲチ
PostgreSQL & pgsql-jp ML 3テーブル目
http://pc8.2ch.net/test/read.cgi/db/1079771059/

8は、、、普通8.xな現在ではこのスレ無くてもいいような・・・
ベータやRC版用として使えればいいが
427NAME IS NULL:2006/10/21(土) 18:31:39 ID:X+FkhGh4
教えて下さい。

Windows2000+apach2.0.59+php5.1.6+postgreSQL8.1.4でテスト動作まで
確認しました。

このマシンはスペックがプアなんで、DBのみの使用にする為に外部に
WindowsXP-Home+apach2.0.59+php5.1.6のマシンを用意したのですが、

dbにアクセスできません。
postgres.conf
listen_addresses = '*'
pg_hba.conf
host testdb all 192.168.1.24 md5
と変更してます。

接続しようとすると以下のエラーがでます。
「Unable to connect to PostgreSQL server: could not translate host name "192.168.10:5432postgres" to address: Unknown server error in …」

何かヒントをいただけませんか?


428NAME IS NULL:2006/10/21(土) 18:36:31 ID:???
ヒント:マニュアル嫁
429NAME IS NULL:2006/10/21(土) 18:37:42 ID:X+FkhGh4
読んで解決出来ないんでヒントを求めてる訳だが・・・
430NAME IS NULL:2006/10/21(土) 22:13:49 ID:???
>>427
単なるIPアドレスの入力間違いじゃね?「192.168.10」て。
431NAME IS NULL:2006/10/23(月) 10:59:57 ID:???
192.168.1.24 から許可したのに、192.168.10 て何だ
432NAME IS NULL :2006/10/23(月) 14:09:54 ID:7g/UfwDX
>>430,431
すんません、>>427のエラーメッセージを拾った時はタイプミスがあったんで・・・
実際には「Unable to connect to PostgreSQL server: could not translate host name "192.168.1.24:5432postgres" to address: Unknown host in 」
だす…
433NAME IS NULL:2006/10/23(月) 16:15:18 ID:???
>>432
"192.168.1.24:5432postgres" の後ろのpostgresは何よ
434433:2006/10/23(月) 16:16:27 ID:???
そのエラーメッセージがあってるのならば、php 側のソースがおかしい。
435NAME IS NULL :2006/10/23(月) 16:38:04 ID:7g/UfwDX
>>433,434
postgresはソースの間違いでした
今は

<?
$con = pg_connect("host=192.168.1.24:5432 dbname=postgres user=postgres");

if($con){
echo "connect OK.";
}else{
echo "connect NG.";
}
pg_close($con);
?>

と直してみました。結果、以下のエラーが出ます
「Unable to connect to PostgreSQL server: could not translate host name "192.168.1.24:5432" to address: Unknown host in C:\Apache Group\Apache2\htdocs\test\connectstar.php on line 2
connect NG.」
436NAME IS NULL:2006/10/23(月) 16:39:15 ID:???
192.168.1.24:5432・・・
437NAME IS NULL :2006/10/23(月) 16:42:18 ID:7g/UfwDX
途中で送信してしまいました。すみません
phpもrdbも素人なんで的外れな事言ってたらすみません
438NAME IS NULL:2006/10/23(月) 17:27:46 ID:???
くっつけるのはjdbcかなにかのクセか?
host=192.168.1.24 port=5432 dbname=・・・
439NAME IS NULL :2006/10/23(月) 18:09:52 ID:7g/UfwDX
>>438

ありがとうございました。
無事接続出来ました。
書式は、どっかのサイトで拾ったサンプルだったんで・・・(^^ゞ
もっと精進します
440NAME IS NULL:2006/10/24(火) 04:05:48 ID:???
>>438
でもでも、半角空白をデリミタにしちゃうのはちょっと気持ちが悪いな。
素人意見だけど。
441NAME IS NULL:2006/10/30(月) 17:00:21 ID:Oa4WHqKk
8.1ダウンロードする際の、
データベースクラスタの初期化の画面で、
アドレス(すべてのアドレスでコネクションを受け入れる ただのlocalhostでなく)
ってやつにはチェック入れるべきなんでしょうか?
442NAME IS NULL:2006/10/30(月) 17:42:39 ID:???
ダウンロードって?
Windows版か何かでDB初期化するのかな。

どう使うかによるでしょ。
あとでconfいじってもなおせるから適当で。
443NAME IS NULL:2006/10/30(月) 17:54:28 ID:Oa4WHqKk
どこかにいいダウンロード入門サイトなる超初心者サイトはないでしょうか・・・
なんかダウンロードの際の入力項目が、いままで使ってたアプリに比べて、異常に多いです。
javaとかだと、初心者サイトで、ダウンロードのフォローもしてくれてるところあったのですが。
ググッたのですが、うまく見つけれません
444NAME IS NULL:2006/10/30(月) 18:31:23 ID:???
ダウンロードの定義を教えてくれないか。
何のことだかさっぱりわからない。

インストールのこと?
445NAME IS NULL:2006/10/30(月) 21:08:20 ID:???
>>441
もし>>444が言う様にインストールの事なら、そのチェックは必要無いよ
設定は後でも変更出来るから

的外れだったらゴメン
446441 443:2006/10/31(火) 05:31:59 ID:i6ugXll1
>>444
>>445
低レベルな質問にお答えいただきありがとうございます。
インストールしようとしたのです。
443に書いたように、インストール時に、あんなに設定しなきゃいけないものを使うのは初めてだったもので。
今までにもあったかもしれませんが、初心者サイトで、そのままやってました。
今回は初心者サイトが見つからなかったので、本屋で入門書を見てきました。
>>445ありがとうございます。本にもそのように書いてました。
とりあえずインストールしてみます。
本は買おうと思ったのですが、た、高いんですね・・・ 手が出なかったです
447NAME IS NULL:2006/10/31(火) 12:33:00 ID:???
>>446
まあ基本的には安全のためだね。
誰でもアクセスできる状態を気づかずに作ってしまうと面倒だからね
448NAME IS NULL:2006/10/31(火) 15:51:40 ID:???
>>446
余計な事かもしれませんが、質問する時は動作環境くらい書いた方が良いよ
特にインストール関連だと、WindowsとLinuxでまるで違うからね
449NAME IS NULL:2006/11/01(水) 15:42:40 ID:???
>>448
ここ、スレタイでWindowsってでかでかと書いてあるから
Windows専門なのかと思う人が多いとは思う
450NAME IS NULL:2006/11/01(水) 15:43:49 ID:???
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)
    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。
451NAME IS NULL:2006/11/05(日) 23:34:19 ID:???
専門スレとは思わないだろけど、、、
しかしなんつーかWindows....いや ODBCとは相性悪いのぅ・・・

ODBC経由の良品ツールはほとんどスカスカのmysql用。

postgreは個人的に付き合いも長いし、DBとしても使いやすいが
一からWindowsで設計をやろうとするとどのツールも
帯に短し襷に(ry になっちまうのが残念だ。

clay core/DBDesigner4/Enterprise Architecture/SI ER
すべてpostgreだとどっかで制限が掛かる or 使用不可。
452NAME IS NULL:2006/11/07(火) 18:28:50 ID:???
けっこう同意だが、postgreという書き方は同意できんw
453NAME IS NULL:2006/11/08(水) 02:27:35 ID:???
>>451
そんなあなたに、EMS SQL Management Studio for PostgreSQL
454NAME IS NULL:2006/11/08(水) 11:58:33 ID:???
>>452
すまんおれは昔からだから、postgresと書くんだが、
最近postgresってなんすかーといカギが多くてな
455NAME IS NULL:2006/11/08(水) 20:50:15 ID:???
greで止めるなって突っこんでんだろ
ところで初代gresってどんなDB?
456NAME IS NULL:2006/11/09(木) 00:53:14 ID:???
>>455
ingres
457NAME IS NULL:2006/11/11(土) 14:35:07 ID:iC3ZS8DG
インストールで、データベースクラスタの初期化ってところで詰まってます。


データベースクラスタの初期化 チェックが入ってる
ポート番号 5432
アドレス     チェックが入ってない
ロケール C
エンコーディング EUC_JP
スーパーユーザ名  postgres

パスワードだけ自分で設定して、あとは初期値のままでいいのでしょうか?
3000円も出して分厚い本買ってきたのに、ここについて詳しく書いてないです。
458NAME IS NULL:2006/11/11(土) 16:42:11 ID:???
>>457

基本的には何も考えずに進んでも大丈夫だと思うよ
大概の事は後から変更出来る
日本語を扱いたいならロケールは「C」のまま変更しない方が
良いらしいよ
459457:2006/11/12(日) 01:05:16 ID:D0ykjlI7
>>458
レス感謝します。
変更が聞くなら、初期値のままで進んでみます。
ありがとうございました。
460NAME IS NULL:2006/11/24(金) 16:53:44 ID:???
SQL Serverから乗り換える利点ってありますか?
461NAME IS NULL:2006/11/25(土) 18:12:16 ID:???
>>460
無償。
462NAME IS NULL:2006/11/25(土) 18:15:33 ID:???
>>460
通っぽい。
463NAME IS NULL:2006/11/25(土) 18:23:47 ID:???
>>460
MS製品でない。
464NAME IS NULL:2006/11/27(月) 18:21:07 ID:???
>>463
重要かも(爆
465NAME IS NULL:2006/12/02(土) 15:12:26 ID:rfS7Dolc
なんでか突然 listen しなくなった。。。
エラーメッセージも出てないし
466NAME IS NULL:2006/12/02(土) 15:33:40 ID:???
>>465
それは独り言?
467NAME IS NULL:2006/12/02(土) 21:38:08 ID:rfS7Dolc
>>466
まあ、そういう問題があるよってこと
468NAME IS NULL:2006/12/04(月) 11:40:44 ID:cYQQ9FVU
Admin権限で起動する方法ってありませんか?
469NAME IS NULL:2006/12/05(火) 12:04:28 ID:???
Admin権限で起動って、rootで動かせないかってこと?
なんで?ポート1024以下を使うつもりなのかな
470NAME IS NULL:2006/12/05(火) 12:12:15 ID:???
Administratorsグループのことかと
471NAME IS NULL:2006/12/05(火) 12:32:02 ID:???
同じ事では。
わざわざそういうことできないようにしてあるのに理由がわからんと
回避手段も考え付かん
472NAME IS NULL:2006/12/05(火) 15:37:44 ID:X++f+GDB
理由は、Adminユーザしか見られない領域に、dataディレクトリを指定しているため。
473NAME IS NULL:2006/12/05(火) 15:39:36 ID:???
その領域にpostgresのアクセス権設定しちゃあかんの?
どうしてもやりたいなら、ソースから構築できる環境?
474NAME IS NULL:2006/12/05(火) 15:45:00 ID:gso8sm/E
select した結果に一件目から1,2,3,4と番号をつけてくれるような
命令ってないでしょうか?
oracleだとROWNUMとかでできるようですが・・・。
475NAME IS NULL:2006/12/05(火) 16:00:00 ID:X++f+GDB
>>473
その領域は、substコマンドで作成した仮想ドライブで、そのユーザしか見られなくて。。。
手段はソース変更のみってこと?
476NAME IS NULL:2006/12/05(火) 16:04:54 ID:X++f+GDB
もう一つ書き忘れたので追加。

やりたいことは、PostgreSQLの環境まるごとをUSBメモリなんかに入れて
持ち運びたいので、インストールなしで起動したいってことなんです。
だからできればpostgresユーザも作りたくない。
477NAME IS NULL:2006/12/05(火) 17:30:15 ID:???
それPostgreSQL以外でも可能?
まあサービスにしないでファイルもエブリワンにしとけばいけるのかな?

USBに置くならSQLiteあたりでええんでないの?
478NAME IS NULL:2006/12/06(水) 18:17:38 ID:???
8.2.0が出たんで早速入れてみたけど、
pg_restoreでエラーが出るようになったぞ
8.1.5だと復元できるのに。うーんなんだこれ
479NAME IS NULL:2006/12/06(水) 18:52:40 ID:???
どういうエラー?
EUCの文字コードエラーってのは最近の版で出るようになったな
480NAME IS NULL:2006/12/06(水) 21:27:29 ID:???
>>479
8.1.4でdumpしたデータをリストアしようとしたんだけど

【8.2.0】だと
pg_restoreからリストアすると
「input file does not appear to be a valid archive」
と出てリストアできない。
psqlからリストアすると上手くいく

【8.1.4】だと
pg_restore、psqlどちらでも上手く行く

どちらも同じdumpデータを使ってる。
これは一体なんだろ・・・
481NAME IS NULL:2006/12/06(水) 23:30:26 ID:???
すいません。
あの、低次元なこと聞くかもしれないのですが、最近webな会社に入ってpostgresを扱うようになったんですが、timestamp型にCURRENT_TIMESTAMPするとμ秒まで入ってしまいますよね?
なのにテーブルの仕様にtimestamp(0)と書かれたのを見たことがないのですが何故なんでしょうか・・・。
482NAME IS NULL:2006/12/07(木) 09:38:08 ID:???
昔のDATETIME型から移行したままだからじゃないの
483NAME IS NULL:2006/12/08(金) 05:17:52 ID:???
精度まで指定するケースってあまり見たことない。
というかあえて精度を悪くする理由がよくわからないんだけど
484481:2006/12/08(金) 07:13:35 ID:???
レス遅くなってすみません。

>>483
やっぱりそれが普通なんですか。
ググッてもtimestamp(0)ってやってるの出てこなかったし。。
でもそうなると表示する際いちいちμ秒削らなきゃいけないですよね?
それはやはり暗黙了解見たいな感じなんでしょうか。
485NAME IS NULL:2006/12/08(金) 09:55:38 ID:???
int4型で格納している秒数を、interval型(?ようはhh:mm:ssのように表示したい)に変換してくれる関数はありますか?
486NAME IS NULL:2006/12/08(金) 10:10:03 ID:???
>>485
SELECT (10000 || ' seconds')::interval;
487NAME IS NULL:2006/12/08(金) 10:55:26 ID:???
>>486
出来ました。ありがとうございました。
488NAME IS NULL:2006/12/10(日) 09:27:08 ID:???
8.2に移行された方、はやくなりましたか?
上の方でうまくdumpが取り込めないという報告がありましたが、
その後どうだったのでしょうか。
489NAME IS NULL:2006/12/14(木) 01:10:50 ID:6qMOtelV
Win版のレプリケーションはないのですか?
490NAME IS NULL:2006/12/14(木) 09:48:40 ID:???
Slony-I のWindows版が出るはず
491NAME IS NULL:2006/12/16(土) 17:46:18 ID:???
質問です。
Postgres 7.4.8から8.1.5にバージョンアップ後、
phpMyAdmin4.0.1やpgAdmin3 1.6.1から編集できないテーブルが出来ました。
phpMyAdminの場合は操作一覧(編集/削除)、pgAdmin3の場合はクリックしても無反応。
7.4.8の頃は全てのテーブルで編集も削除できていました。
出来るものと出来ないものの違いはINDEXがあるかないかくらいです。
ちなみにSQLレベルではINSERT/UPDATE/DELETE可能です。
こんな現象になった人はいませんでしょうか?
492NAME IS NULL:2006/12/16(土) 19:56:01 ID:???
phpMyAdmin?
493491:2006/12/16(土) 20:29:57 ID:???
>>492
すまそ。phpPgAdminです。
8.1以降OIDがデフォルトで生成されなくなったのですね。
どうやらそのせいのようです。キーをちゃんと指定しろってことですね。
失礼しました。
494NAME IS NULL:2006/12/17(日) 14:54:06 ID:???
ストアドプロシージャはひとつのトランザクション中で実行されるようですが
autocommitのON・OFFにかかわらずそうなのでしょうか?
それともautocommitがONの場合には、ストアドプロシージャ中のSQL文が実行されるたびにコミットされているのでしょうか?
495NAME IS NULL:2006/12/17(日) 22:06:24 ID:7ekSKI67
日付データのDB登録について教えて下さい。
Freebsd
jdk-1.5.0p2_6 Java Development Kit 1.5.0
postgresql-client-8.1.3 PostgreSQL database (client)
postgresql-jdbc-8.1.404 The Java JDBC implementation for PostgreSQL
postgresql-server-8.1.3 The most advanced open-source database available anywhere
な環境で

testdb=# \d ttt_table
Table "public.ttt_table"
Column | Type | Modifiers
-------------+--------------------------+-----------
d_date | date |
d_time | time without time zone |
d_timestamp | timestamp with time zone |

としました。
496NAME IS NULL:2006/12/17(日) 22:07:07 ID:7ekSKI67
ちょっと古いサンプルプログラム(PostgreSQL 7.1.3 JDBC 1.3.1)で

import java.lang.*;
import java.sql.*;

public class Hizuke {
public static void main(String [] args) {

Connection conn = null;
String url = "jdbc:postgresql:testdb";
String user = "postgres";
String password = "";

String date_field = "2002-11-05";
String time_field = "10:09:35";
String timeStamp_field = "1980-09-21 15:42:13";

try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, user, password);

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO ttt_table values (?, ?, ?)");
pstmt.clearParameters();
pstmt.setString(1, date_field);
pstmt.setString(2, time_field);
pstmt.setString(3, timeStamp_field);

pstmt.executeUpdate();
conn.commit();

pstmt.close();
conn.close();

} catch(SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
}

を実行すると、
497NAME IS NULL:2006/12/17(日) 22:08:20 ID:7ekSKI67
%java Hizuke
org.postgresql.util.PSQLException: ERROR: column "d_date" is of type date but expression is of type character varying
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:430)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:346)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:300)
at Hizuke.main(Hizuke.java:26)
%

となります。
一見してdate型にsetStingしているのが悪いように思い色々試したのですがうまく行きませんでした。
netで検索するとdate型にsetStingしているサンプルプログラムが非常に多いのですが環境がダメなのでしょうか。
できれば上記サンプルと同じ動きをするプログラムを書いて頂けるとうれすぃです。

よろしくお願いします。
498ココ電球(∩T∀T)  ◆tIS/.aX84. :2006/12/18(月) 00:32:04 ID:K/LY4AKs
よくわからんがシングルクオートでくくらなくてええの?
'2006-12-18 00:22:33' とか
499NAME IS NULL:2006/12/18(月) 03:03:27 ID:???
>>495
8系のJDBCドライバでは、setter の型チェックが厳密になりました。
日付系(に限らずすべて)、DB側の型に合わせた setter を
使用する必要があります。setDate()、setTime()、setTimestamp()。

ttp://archives.postgresql.org/pgsql-jdbc/2005-06/msg00150.php

システム要件でどうしても7.4系のJDBCのようにsetStringでいけないと
ダメだ、という場合には protocolVersion=2 を付けるように。
(いつまでサポートされるかは知りませんが)

jdbc:postgresql://localhost:5432/postgres?protocolVersion=2
500495:2006/12/18(月) 03:55:50 ID:???
>>499
ありがとうございました。参考に致します。

助かりますた。

>>498もありがとうね。イッショニガンバロー
501495:2006/12/18(月) 05:55:16 ID:???
>>499

ありがとうございました。

import java.lang.*;
import java.sql.*;

public class Hizuke {
public static void main(String [] args) {

Connection conn = null;
String url = "jdbc:postgresql:testdb";
String user = "pgsql";
String password = "";

String date_field = "2002-11-05";
String time_field = "10:09:35";
String timeStamp_field = "2006-09-21 15:42:13.0";

java.sql.Date newDate = java.sql.Date.valueOf(date_field);
java.sql.Time newTime = java.sql.Time.valueOf(time_field);
java.sql.Timestamp newTimestamp = java.sql.Timestamp.valueOf(timeStamp_field);

try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, user, password);

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO ttt_table values (?, ?, ?)");
pstmt.clearParameters();
pstmt.setDate(1, newDate);
pstmt.setTime(2, newTime);
pstmt.setTimestamp(3, newTimestamp);

pstmt.executeUpdate();
conn.commit();

pstmt.close();
conn.close();

} catch(SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
}



testdb=# select * from ttt_table;
d_date | d_time | d_timestamp
------------+----------+------------------------
2002-11-05 | 10:09:35 | 2006-09-21 15:42:13+09
(1 row)

となりました。
502NAME IS NULL:2006/12/21(木) 16:52:16 ID:???
jdbcからアクセスしたいのですが、実行時にエラーが出てしまいます。
org.postgresql.util.PSQLException: FATAL: missing or erroneous pg_hba.conf file
pg_hba.confの設定にミスがあるようなのです。

javaでのアクセス法
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://192.168.1.2:5432/hellodb","postgresql","");

pg_hba.confの設定
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 192.168.1.0/99 trust
503NAME IS NULL:2006/12/21(木) 17:21:24 ID:???
/99
504NAME IS NULL:2006/12/21(木) 17:43:54 ID:???
99ってどっから出てきたんだw
1台だけなら 32 、クラスCのアドレス全部なら 24 で
505NAME IS NULL:2006/12/21(木) 18:11:38 ID:???
192.168.1.93(クライアント)からアクセスするので/99ぐらいにしておきました。
ネットワークのことが良くわかっていないみたいで、申し訳ないです。
506502:2006/12/21(木) 18:16:04 ID:???
すみません。どちらにしても、エラーが出てしまいます。

/32の場合
org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "192.168.1.93", user "postgresql", database "hellodb", SSL off

/24の場合
org.postgresql.util.PSQLException: FATAL: role "postgresql" does not exist
507NAME IS NULL:2006/12/21(木) 18:20:17 ID:???
/24はユーザー名の間違いでした。どうもすみませんでした。

ちなみに/32のエラーはどういった理由なのか、一応知りたいのですが、お願いできますでしょうか?
508NAME IS NULL:2006/12/21(木) 18:22:02 ID:???
>>506
えっとだな、192.168.1.1〜192.168.1.254 までの許可なら192.168.1.0/24 でいいよ
1台だけ許可するなら、 192.168.1.2/32 な

で、postgresql というユーザーは作ってあるの?
デフォルトの管理者は、postgres だと思うよ
まあ管理者アカウントは使わないほうがいいが
とりあえず動かすなら、postgres にしてみ
509NAME IS NULL:2006/12/21(木) 18:23:25 ID:???
遅かった。
/32 は、たぶん 192.168.1.0/32 とやったんだろう
これだと 192.168.1.2 は含まれないから単にはじかれただけ。
510NAME IS NULL:2006/12/21(木) 18:24:05 ID:???
っと、192.168.1.93 だったね
511NAME IS NULL:2006/12/21(木) 18:30:47 ID:???
>>510
ご親切にありがとうございます。
お察しの通り192.168.1.0/32とやっておりました。
192.168.1.93が含まれずにはじかれた、ということですね。
お手数かけてすみませんでした。
大変勉強になりました。ありがとうございました。
512NAME IS NULL:2006/12/22(金) 00:53:26 ID:k4k2FTfM
>>490
Slony-I のWindows版が早くリリースされることを期待しています。
513NAME IS NULL:2006/12/25(月) 15:40:55 ID:???
PostgreSQL8でDBの文字コードにShiftJISって使えないの?
514NAME IS NULL:2006/12/25(月) 16:22:49 ID:???
内部コードでは使えません
クライアントエンコーディングには設定できるので、使い勝手は問題ないです
515NAME IS NULL:2006/12/28(木) 00:16:27 ID:P4qIqcJd
質問いいですか?PostgreSQL8.1.5 on Linux(debian sarge)です。

postgresql.confに記述するauthentication_timeoutがよくわかりません。

1. authentication_timeout=60 に設定
2. postmaster再起動
3. psqlで接続を試みる。パスワード求められる時に60sec以上待つ
4. パスワードログインできる

このパラメタって3の段階で接続要求をきるという意味ではないのですか?
4.のようにログインできてしまいます。
516NAME IS NULL:2006/12/28(木) 08:45:04 ID:1MAdQIZd
>>515
使ったことないから知らないけど、普通に考えたら
「パスワード入力後にレスポンスが返ってくるまで」の
タイムアウトじゃないの?
むしろどうして3.のタイムアウトだと思ったのかを教えてほしい。
517NAME IS NULL:2006/12/28(木) 09:38:26 ID:???
つーか、そこで60秒待たせてるのはpsqlであってサーバじゃないからじゃないの?
518NAME IS NULL:2006/12/28(木) 09:49:12 ID:???
>>516-517
そう。
psqlがサーバからのレスポンスを待つ時間。
519NAME IS NULL:2006/12/28(木) 09:52:46 ID:???
>>515
psqlは接続要求したときにパスワードを求められたら、一旦接続解除。
psqlがPassword:プロンプトを出して、入力後に再度接続要求を出してる。
520NAME IS NULL:2006/12/28(木) 09:57:58 ID:???
>>518
それはちがうだろw
521515:2006/12/29(金) 09:03:30 ID:rT8vx8ru
515です
>>516
オフィシャルドキュメントより:
この時間内に自称クライアントが認証プロトコルを完了しない場合、
サーバは接続を中断します。
--
プロンプトがでてる段階で、プロトコルレベルで認証の段階なのでは
って思ったからですね。でもよく考えるとpsqlがlibpq使うのならありえないなあ。

>> 517, 519
なるほど。 ありがとう。結局ソースコード見て確認しました。
src/bin/psql/startup.c:204あたりだね(PostgreSQL8.1.5)
パスワード入力がされていない時は、
1. psqlがPQsetdbLoginでパスワードなしで接続
2. 接続状態をみてパスワードが必要であることを確認
3. コネクトを切り、pass入力プロンプトを出す、で再接続
みたいになってました。
psqlで60sec待ってるから515でやってた方法じゃうまくいかないのだね。
522NAME IS NULL:2007/01/08(月) 13:18:11 ID:MGKZA6gM
Windows XP HomeEdition に8.2を入れ、新しいデータベースを作成したのですが、
pgAdminからバックアップ/リストアができません。
8.1の時は、作成したデータベース->[右クリ]にバックアップ/リストアの
メニューがありましたが、8.2では[ツール]にバックアップ/リストアが
あり、常に選択不可になっています。
どなたかご教授いただけると幸いです。
523NAME IS NULL:2007/01/08(月) 18:02:30 ID:???
権限無いんじゃないの?
普通に右クリックのメニューでもツールでも使えてるけど
524NAME IS NULL:2007/01/08(月) 18:03:55 ID:???
って今確認するために入れたんで 8.2.1 でした、一応
525NAME IS NULL:2007/01/08(月) 22:44:30 ID:Cby+pvUG
>>523
ありがとうございます。
 @net user postgres /delete で古いアカウントを消す
 AAdministratorsグループのユーザでinstall
 Bサービスアカウント postgres -> 自動作成
 CDBのスーパーユーザ postgres
上記の手順でやっています。
コマンドでpg_restoreなら問題なくできました。不思議です。
526NAME IS NULL:2007/01/09(火) 14:31:53 ID:???
こういう場合、Aの接続って問題ない?

接続しっぱなしのAセッション上でユーザ定義関数a()を繰り返し実行する
別セッションBからCREATE OR REPLACE a()を実行して定義を更新する

更新後にユーザ定義関数a()を実行する際に新しい定義に更新される
って、解釈でいいんだろうか?
それとも、セッションAはエラーでa()関数が実行できなくなる?
527ココ電球(∩T∀T)  ◆tIS/.aX84. :2007/01/09(火) 20:09:21 ID:EnJ2TtdZ
Adminのバックアップはバージョンが違うと読み込めなくなりましたので
psqlをつかいませう
だそうです
528NAME IS NULL:2007/01/10(水) 07:05:55 ID:ZM1Em5ev
内部アカウント検索に失敗しました:
アカウント名とセキュリティIDの間の
マッピングは実行されませんとでるが

何が原因なんでしょうか?
WinXPpro
セキュリティ avast
529NAME IS NULL:2007/01/11(木) 21:28:10 ID:???
内部アカウントを列挙する権限がないとか?
530NAME IS NULL:2007/01/12(金) 21:31:04 ID:b0W6bgat
windowsってパーミッションデネードとか出ないの?
531NAME IS NULL:2007/01/13(土) 17:54:58 ID:???
出るけど?
532NAME IS NULL:2007/01/30(火) 23:06:16 ID:Xgx4NnsH
ユーザを作成してもデータベースに接続できません。
何が悪いんでしょうか?以下のようにやってます。

CREATE USER
    user_name
WITH
    PASSWORD 'password';

GRANT
    CONNECT
ON DATABASE
    my_database
TO
    user_name;

これで

psql -U user_name -d my_database

で接続できません。何が足りないのでしょうか?
533NAME IS NULL:2007/01/31(水) 10:08:36 ID:???
GRANT に CONNECT ってあったっけ。

接続制御はpg_hba.confでやるから無いんじゃないかな。
534NAME IS NULL:2007/01/31(水) 23:33:00 ID:???
windows2000ProSP4のサーバ用デスクトップ1台とクライアント用ノートPC2台に
postgresql-8.2-ja.msiからインストールしてみたのですが、クライアント用の
ノートPC1台にODBCドライバがインストールされません。(インストール動作は正常に
終了するのですが。) もう一台のノートにはpostgreSQL ODBCドライバは
インストール出来ていて、サーバ用のデスクトップ機もドライバは確認できます。
インストール可能であった2台は最近OSを入れ直したものです。どのマシンも
windowsアップデートはしてあります。
何か理由があるのでしょうか?? 詳しい方アドバイス頂けませんか?
535NAME IS NULL:2007/02/01(木) 10:03:56 ID:???
adminじゃないとか?
536ココ電球(∩T∀T)  ◆tIS/.aX84. :2007/02/01(木) 18:47:49 ID:BE/MXAwv
データベース無いとか
537NAME IS NULL:2007/02/01(木) 23:30:21 ID:???
レス有難うございます。
Administrator権限でインストールしました。
ODBCドライバがインストール出来た・出来なかった、どちらのノートPCからも
pgAdminからだとサーバのデータベースにアクセス可能です。 なので
データベースがないわけでもありません。
う〜ん。
538ココ電球(∩T∀T)  ◆tIS/.aX84. :2007/02/02(金) 00:07:56 ID:htSkYdhW
admin権限で入ってインストールした?
539NAME IS NULL:2007/02/02(金) 00:55:53 ID:???
Windows版にはコマンドプロンプトからの
createuser
はないんだっけ?
540NAME IS NULL:2007/02/02(金) 01:33:48 ID:???
あるよ
541534:2007/02/02(金) 22:17:47 ID:???
>>538
レス有難うございます。
「Administrator」でWindows2000にログインしてpostgresqlをインストールしました。
同じWin2000proSP4でもODBCドライバがインストール不可能な場合があるんです・・・
「コントロールパネル」→「管理ツール」→「データソース(ODBC)」→「・・・DSN」で
PostgreSQLドライバが追加できません。
542534:2007/02/03(土) 09:06:47 ID:???
Microsoft Data Access Components (MDAC) 2.8 SP1 をwin2000にインストールしたら
PostgresqlODBCドライバが登録できるようになりました。
MDACのバージョンは2.8になっていたのですが、Windows updateではサービスパック1
は適用されていなかったのでしょうか。
スレ汚しスミマセン。
543ココ電球(∩T∀T)  ◆tIS/.aX84. :2007/02/03(土) 20:54:40 ID:WYHC8egd
いえいえ私も 大変参考になりました。
544NAME IS NULL:2007/02/09(金) 16:08:33 ID:???
psql で \d t1 とすると t1 のカラムとその型が分かりますが、
t1 に 100 以上カラムがあり、その中から c50 というカラムの
情報だけ見る方法はないでしょうか。
545NAME IS NULL:2007/02/09(金) 16:17:34 ID:???
>>544
pg_class,pg_attribute,pg_typeでもselectしてくれ。
546NAME IS NULL:2007/02/09(金) 17:37:10 ID:???
>>544
やはり簡単に知る方法はないんですね。

# \d t1 c50
c50 | interger | default 0

とか

#\d t1 c5*
c50 | interger | default 0
c51 | text |

とか見ることができれば最高ですかね。
547NAME IS NULL:2007/02/09(金) 18:00:21 ID:???
>>546
% echo '\d t1' | psql -d hogedb | grep 'c50'
548NAME IS NULL:2007/02/09(金) 18:44:02 ID:???
>>546
システムカタログをselectするのが
簡単じゃないって言うのかwww
549NAME IS NULL:2007/02/09(金) 19:20:26 ID:???
>>547
ありがとうございます!
echo '\d '$2 | psql -d $1 | grep $3
というスクリプトを作りました。

>>548
簡単なんですか?
550NAME IS NULL:2007/02/09(金) 19:22:09 ID:???
システムカタログも普通のテーブル
551NAME IS NULL:2007/02/15(木) 20:10:32 ID:???
c50だのc51だのってペースで100以上もカラム作成した本人を呼んでくるのがいいと思うよ
552NAME IS NULL:2007/02/20(火) 14:48:38 ID:???
PostgreSQL8 は .NET Framework2.0 必須なの?
553NAME IS NULL:2007/02/20(火) 23:18:42 ID:???
味噌汁で顔を洗って出直してきてね
554NAME IS NULL:2007/02/20(火) 23:22:45 ID:???
なんかよくわからんが、ワラタ
555NAME IS NULL:2007/02/21(水) 20:19:00 ID:???
>>552
Windows版は必須です。
556NAME IS NULL:2007/03/05(月) 23:21:40 ID:???
メモ、メモ、

日本語のユーザー名でWindowsにログインしている
状態で、pgadmin1.6.2をインストールして実行しようと
すると、
C:\Documents and Settings\xxx\Application Data\postgresql\pgpass.conf
がありまへーんって言われます。

適当なユーザー名(日本語含まず)でログインしなおして
pgpass.confをコピーしたら動きました。

557NAME IS NULL:2007/03/17(土) 01:15:29 ID:???
ユーザ定義関数内の実行プラン見たいんだけど…
558NAME IS NULL:2007/03/22(木) 00:57:57 ID:aRIeHmyL
あのさぁ、8.2.0でWORK_MEMを100MBぐらいとると、大量のデータをSELECTしたら、
際限なくメモリを確保しようとするんだ…。
8.2.1の環境もあって、こっちも同じような動きをしてスワップしまくり…。
orz

80MBぐらいにすると期待したとおりのメモリ使用量なんだが、何でですかね…。
559NAME IS NULL:2007/03/22(木) 23:42:28 ID:???
とりあえず、味噌汁で
560NAME IS NULL:2007/03/27(火) 02:02:20 ID:???
教えてください。(v8.2.3)
ロール(ユーザ) test が、自分で作成したデータベースだけ
アクセスできるようにしたいのですが、うまくいきません。

# pg_hba.conf
local samerole test md5

$ psql
test=>\l
Name |  Owner 
--------------
test  |  test
test2  |  test (Encoding は省略)

データベース test にはアクセスできるのですが、test2 は
test=>\c test2
FATAL: no pg_hba.conf entry for host "[local]", user "test", database "test2", SSL off

となります。アクセス権限が samerole なら、データベースのロール (Owner?) と
同じものにアクセスできるものとマニュアルから判断しているのですが、
sameuser の同じ動作ような動作になっています。
どこか間違っている、または足りないことがあると思うのですが分かりません。
561NAME IS NULL:2007/03/27(火) 11:25:05 ID:???
samerole は samegroup から名前が変わっただけで機能は同じみたいですよ。
この場合、test2グループを作って、そこのメンバにtestをいれてやらないとなりませんね。
562560:2007/03/27(火) 14:15:40 ID:???
>>561
分かりやすいご説明ありがとうございました。

マニュアルに書かれている通り、pg_hba.conf はホスト制限や
パスワード形式のみの設定に留めておき、
個々のデータベースに関しては、その都度 CONNECT 権限で設定してみようと思います。
563NAME IS NULL:2007/03/30(金) 14:59:57 ID:???
TBクラスのDBにVACUUM FULLをしたいんだけど、どんくらいかかるかなぁ…。
一応、毎晩各テーブルにはVACUUM ANALYZE してるんだけど。
SCSIのスマートアレイ接続でLinux ext3fs。


564NAME IS NULL:2007/03/30(金) 15:09:59 ID:???
バージョンは8.2.3なの。
565NAME IS NULL:2007/03/30(金) 15:23:36 ID:???
UPDATE頻度によるんじゃね
566560:2007/03/30(金) 20:42:05 ID:???
こんばんは、また教えてください。(v8.2.3)
データベースのアクセス権限を確認できるコマンドはありますか?

テーブルは \z で簡単に確認できるようですが、色々調べてみて
pg_database を除いてみることくらいしか現状分かっていません。
567NAME IS NULL:2007/03/31(土) 00:14:25 ID:1yUfpQQS
select * from pg_user; ?

568NAME IS NULL:2007/04/03(火) 12:04:08 ID:???
すれ違いだったら指摘頼んます

WindowsにOLEDBのドライバ突っ込んでみたんですが動かない状態です。
PgOleDb-1.0.0.20を導入しようとしました。
レジストリへの登録はREADMEの通りにやって正常に登録できたとメッセージ表示

さて、いざVB.NETで以下のように接続してみようとしましたが
OPENしようとした時にエラーメッセージが表示されます。
-------SOURCE
Private cnn As New OleDb.OleDbConnection("Provider=PostgreSQL OLE DB Provider;data source=XXX.XXX.XXX.XXX;location=XXXX;Uid=XXXX;Pwd=XXXX;timeout=15;")
cnn.open
cnn.close
cnn.dispose
--------------

-------------Message
FATAL: no PostgreSQL user name specified in startup packet
--------------

VBのコードの問題ではないのではないか?と思いこちらに投稿させていただきました。
もしなにか情報をご存知の方はお教え願えませんか?
569NAME IS NULL:2007/04/03(火) 12:43:55 ID:???
多分バージョン違いではないかと
PostgreSQLはどのバージョンをお使いですか?
570NAME IS NULL:2007/04/03(火) 12:46:20 ID:???
レスありがとうございます。

>>569
Postgresの接続先バージョンは8.2です。
確かOLEDBドライバは7.1X以前はサポートしてなかったと記憶しているんですが、もしかして逆だったんでしょうか?
571NAME IS NULL:2007/04/03(火) 12:53:37 ID:???
んじゃOleDbConnectionに渡す文字列が違うんじゃない?
どこから持ってきたのかな、もしかして別のRDBMS?
572NAME IS NULL:2007/04/03(火) 13:08:07 ID:???
とりあえず
接続情報として
http://www.connectionstrings.com/?carrier=postgresql
ここからOLEDBのものをコピーして

接続先192.168.1.22のアドレスにあるPostgres8.2のDB test に接続します。
スーパーユーザーはUID=postgres PWD=postgres
としこのIDはPgAdmin3で接続する時に使用しているので大丈夫のようです。

結果接続文字列は以下のようになっています。
"Provider=PostgreSQL OLE DB Provider;data source=192.168.1.22;location=test;Uid=postgres;Pwd=postgres;timeout=15;"

573NAME IS NULL:2007/04/03(火) 14:59:36 ID:???
>>572
OLE DB のとこはUser ID=myUsername; ってなってるけど。
UidってODBCじゃないの?
574NAME IS NULL:2007/04/03(火) 15:21:13 ID:???
>>573
うわぁ・・・・・・
本当にごめんなさい

ほんとうだ・・・
なんかクセでこうなってて見落としていた様子です。

これを仰るとおりに修正したら一歩進む事ができました。
エラーだけどこのエラーは調べた時にフォーラムで見たことあったはずなんで調べてやってみます。

くだらない事でお手数おかけしました・・・・
575NAME IS NULL:2007/04/04(水) 11:04:53 ID:???
pgpool2 の質問です。
serial 型は扱えないと聞いたのですが本当でしょうか?
もしそうなら、どのようにしてユニークなキーを扱うのでしょうか?
( serial を発行する別の DB サーバを用意する? )
576NAME IS NULL:2007/04/04(水) 11:09:46 ID:???
ずれる場合がありうるってことだよね。
シリアルが使われてるテーブルでINSERTするときは
必ずテーブルをロックすれば回避できるとは思うが
577NAME IS NULL:2007/04/04(水) 11:10:59 ID:???
578NAME IS NULL:2007/04/04(水) 16:02:15 ID:???
>>576-577
insert_lock という便利なオプションがあるのですね。
ありがとうございました。
579NAME IS NULL:2007/04/09(月) 12:47:03 ID:???
初心者です。

質問なのですが、Postgresのデータベースを元に、WEBページ上のあるアイコンの表示をオンオフ、
または他のアイコンと切り替えて表示させるにはどうしたらよいのでしょうか?

漠然とした質問ですが、どなたかご教示お願いします。
580NAME IS NULL:2007/04/09(月) 12:55:00 ID:???
>>579
「テーブルのデータの内容を判断して、
 WEBページ上のあるアイコンの表示をオンオフ、 
 または他のアイコンと切り替えて表示させる」
サーバサイドスクリプトを記述すればいいと思うよ。
581NAME IS NULL:2007/04/09(月) 13:38:49 ID:???
579です。

>>580
ご指導ありがとうございます。
もう少し、詳しく書いてみます。
今、格闘している.phpファイルにこんな感じで、スクリプトが記述されています。
<? $obj = pg_fetch_assoc(pg_exec("select * from users where \"user\"='$k'")); ?>
<?= $k ?>
この.phpファイルですと、usersテーブルのuser列で指定された文字データはWEBページ上で表示されます。
この中のあるデータを0、1で記入するなどして、それを特定のアイコンにon、offで対応させ、WEBページ上で表示させたいと思っています。
たとえば、0をYes、1をNoと設定して、YesのアイコンやNoのアイコンを表示させる感じです。
データベースとアイコン画像を結ぶスクリプトをどう記述したらよいかで悩んでいるのです。
どうかご教示お願いいたします。
582NAME IS NULL:2007/04/09(月) 14:06:35 ID:???
アイコンってfaviconとかじゃなくて、画像データのこと?
IMAGEタグのファイル名を入れ替えるんじゃだめなのか
で、DB関係なくないか?
583NAME IS NULL:2007/04/09(月) 14:11:28 ID:???
>>581
>データベースとアイコン画像を結ぶスクリプトをどう記述したらよいかで悩んでいるのです。
データや画像はどうなっているのだ?

・・・PHPスレへ
584NAME IS NULL:2007/04/09(月) 14:19:00 ID:???
579です。

>>582
faviconではなく、gifなどの画像データです。
スレ違いでしたら、すみません。
よろしくお願いいたします。
585NAME IS NULL:2007/04/09(月) 14:32:47 ID:???
>>584
よろしく、ということはまだここで聞くのか?
なにが聞きたいのかイマイチワカラン。
usersテーブルに画像ファイルの名前入れておく。
586NAME IS NULL:2007/04/09(月) 14:41:56 ID:???
いや、だからPHPの話題だし、スレ違い。
587NAME IS NULL:2007/04/09(月) 15:28:58 ID:???
>>579
誘導
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/l50
588NAME IS NULL:2007/04/11(水) 12:02:10 ID:7MN6WPvy
<img src="<%= k %>">


jspだけど

kにDBから読み込んできたimgのurlが入ればよいのでは?
589NAME IS NULL:2007/04/11(水) 20:19:46 ID:???
VBが目立って遅いケースはValiantを使ってる場合だな。
パフォーマンスうんぬんいうなら、option explicit / option strictは必須。
C#でもボクシング・アンボクシングを繰り返すように書けば同じように遅くなる。

クラスとか構造体とかはCLSコンパチにするためにVB6から、
めちゃくちゃ変わってて、C#と変わらんようになってるぞ。
590NAME IS NULL:2007/04/11(水) 20:21:16 ID:???
>>589
すまん誤爆
591NAME IS NULL:2007/04/12(木) 22:04:29 ID:???
592NAME IS NULL:2007/04/12(木) 22:39:52 ID:???
いまさら8.1.5て。セキュリティは強化されても、バグは修正されず。
593NAME IS NULL:2007/04/13(金) 20:44:40 ID:dG/Glk62
RedhatEP3でPostgres7.4.3を使っています。
毎日cronで以下のようにvacuumとanalyzeの両方を実行しています。
vacuumdb -d DB名 --analyze >> test.log

これを、analyzeのみの実行としたいのですが、
どう書いたらいいのでしょう。

vacuum用のラッパークラスはvacuumdbですが、
analyze用のラッパークラスは無いですよね。
ひょっとしてラッパークラス使わなくても(無くても)、
psql -d DB名 -c "ANALYZE --VERBOSE テーブル名(カラム名)" >> test.log
ってすればよいのですか?
594NAME IS NULL:2007/04/13(金) 21:33:13 ID:???
>>593
YES. 面倒ならば テーブル名(カラム名) も省略可。単なるラッパに過ぎない。
あと、ラッパー「クラス」ってのは単語の使い方がおかしい。
595NAME IS NULL:2007/04/13(金) 21:55:33 ID:???
>> 594
回答ありがとうございます。
ラッパークラスでなくてラッパー「スクリプト」ですね。


postgrsってvacuumの存在のせいで酷く使い勝手が悪い気がしますが、
他のDBと比べてメリットってありますか?

OracleとかSQLServerなら自動的にpostgresで言う所のanalyzeを
してくれますし(効果の程は知りませんが)、vacuumも必要ありません。
MySQLと比較しても両者に機能的な差はほとんど無い気がしますし・・
596NAME IS NULL:2007/04/13(金) 23:09:34 ID:???
>>595
俺はOracle方言っぽいSQL構文がそのまま使えるとか、
Oracleにはないlimit offsetの存在だけでも使う意味があると思ってる。
あと、無償だしな。

運用中にvacuum必要なのは糞仕様だと思うがwww

今のMySQLはサブクエリとかインラインビューとか使えるのか?
597NAME IS NULL:2007/04/14(土) 00:16:20 ID:???
>>595
autovacuum = on やってれば vacuum なんて気にならない。
598NAME IS NULL:2007/04/14(土) 16:03:08 ID:???
postgres7 から 8 へデータベースを移転し
SQLを発行したら今までにないエラーが出ました

Query failed: ERROR: invalid input syntax for type double precision: ""

float8でNull許可してるのにこう返されてしまいます
なにか違うのでしょうか?
599NAME IS NULL:2007/04/14(土) 17:33:13 ID:???
>>598
厳密なバージョンを書け。理由はたぶんこれ。
http://www.postgresql.jp/document/current/html/release-8-0.html
E.26.3. 廃止予定の機能
oid/float4/float8データ型に空文字列を代入した時に、サーバが警告を発するようになりました。
次のメジャーリリースでは、空文字列はこうしたデータ型では無効とみなす予定です。
600NAME IS NULL:2007/04/14(土) 18:01:51 ID:???
>>599
レスありがとうございます

バージョンは 7.4.6 から 8.1.8 です
紛れも無くそれですね orz...
601NAME IS NULL:2007/04/14(土) 20:47:22 ID:???
空文字列とNULLがまったく同一であるというのは、Oracleだけで結構w
602NAME IS NULL:2007/04/17(火) 18:51:09 ID:???
東京にある C# アプリで Npgsql を使って
アメリカにある PostgreSQL に接続しようと思います。

この時、セキュリティ確保のために
ネットワークに流れるデータを暗号化したいのですが、
どのような方法があるでしょうか?
603NAME IS NULL:2007/04/17(火) 20:09:07 ID:???
両端をsshでポートフォワードつーのがお手軽なきがするが。
604NAME IS NULL:2007/04/18(水) 01:48:19 ID:???
VPNが楽では?
605NAME IS NULL:2007/04/18(水) 02:24:22 ID:???
>>522
>>525

WindowsXP Proにインストールした
8.2.3 の pgAdminIII (ver1.6.1)で、 同様の現象で、
右クリックでバックアップ、リストアが選択できません。
pg_dump.exe/pg_restore.exe のコマンドでは、OKです。

Windows2000にインストールした 8.2.3 の pgAdminIII、なら、起こりません。
また、8.0.3 の pgAdminIII (ver1.3.0)で、8.2.3 のDBに接続して、
右クリックでバックアップ、リストアが選択できます。

また8.2.3 の pgAdminIII (ver1.6.1)だと
データビューでの操作で、
アプリケーションエラーで落ちることもあるなぁ。。。
不安定なのかな。。。

簡易版GUIでも作成しようかなぁ。。。
古いpgAdminIIIを利用する方が、楽かぁ?!。。。(不安だけど)

8.2.3 の pgAdminIIIのバックアップとリストアって、
pg_dump.exe/pg_restore.exe をコールしてるんですよね?
8.0.3 の pgAdminIIIに pg_dump.exe/pg_restore.exe 入れ替えてみるかぁ?!
606NAME IS NULL:2007/04/18(水) 11:44:56 ID:???
>>602
回答いくつか出てるが、

丸ごと暗号化 VPN
ポート単位で暗号化 ssh フォワード
PostgreSQLが持ってる昨日を使う SSL
607602:2007/04/18(水) 12:54:18 ID:???
>>603,604,606
ありがとうございます。
SSL 機能を利用してみたいと思います。
608NAME IS NULL:2007/04/19(木) 00:37:01 ID:5U3UALOA
Admin権限で起動できないのは勘弁だぜ・・・
609NAME IS NULL:2007/04/20(金) 23:55:45 ID:???
すいません、PostgreSQLでPL/PGSQLのFunction+Triggerを作ってるんですが

こんなメッセージがでます。

"control reached end of trigger procedure without RETURN CONTEXT: PL/pgSQL function xxxxx()"

Functionは   create function xxxxx() returns opaque as'
からはじめて戻り値は無いようになってますが

Trigger を実行すると上のエラーが出ます

どなたか何処を見直せばいいのか教えてもらえますでしょうか?
610NAME IS NULL:2007/04/21(土) 00:01:38 ID:???
611NAME IS NULL:2007/04/21(土) 00:17:35 ID:???
>>610
ありがとうございます。

一回じっくりと読んでみます
612NAME IS NULL:2007/04/21(土) 00:20:23 ID:???
>>611
じっくり読まなくても、数行で答えが。
「トリガ関数は、引数を取らない、trigger型を返す関数として宣言される必要があります」とね。
613NAME IS NULL:2007/04/21(土) 00:34:01 ID:???
>>612
ありがとうございます。

RETURN NEW or OLD;
が抜けていた為でした。

トリガーには RETURN がいらないものと勝手に解釈しておりました。

すみません、以降マニュアルを読んでから書き込みをします。

614NAME IS NULL:2007/04/22(日) 10:59:41 ID:???
PostgreSQL 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19
615NAME IS NULL:2007/04/22(日) 18:50:03 ID:???
>>614
including a security fix. (CVE-2007-2138)
security-definer function は癌だな。
616NAME IS NULL:2007/04/25(水) 14:22:13 ID:Qc+BtLRI
ver 8.2.3 と VB6 ですが、
ver 8.0.3 では、問題ないのに、
ほとんどのSQL文は問題ないけど
特定の select 文で、
『-2147467259 データ プロバイダまたはほかのサービスが E_FAIL 状態
を返しました。』
っていうエラーが出るなぁ。

8.2.3 のドライバ『PostgreSQL Unicode』だと出るが、
8.0.3 のドライバ『PostgreSQL』だと出ない。

8.2.3のDB に対して、
8.0.3 のドライバ使用して問題あるってことありますかねぇ?

他、8.2.3って何か問題出てますか?
617NAME IS NULL:2007/04/25(水) 16:18:25 ID:???
>>616
Unicode版のドライババージョン詳細は?
いのっち父さんの最新ドライバと入れ替えたら?(何のことか分からないなら検索)
特定のSQL文とは?
618NAME IS NULL:2007/04/26(木) 01:48:17 ID:Oh0EKWzP
>>617
ありがとうございます。

『PostgreSQL Unicode』のバージョンは、
8.0.2.02.03(2006/12/19版)です。
VB6とは、ADO接続です。

SQL文はテーブル構成は省略しますが、以下のような感じです。
------------------
select
case
when aa.id=0 then aa.name
else null
end as name1,
case
when aa.id=0 then null
else aa.name
end as name2,
aa.id2,
aa.kbn,
aa.id,
bb.grp,
bb.grpname
from table1 aa left join
(
select * from table2
where grp=2
) bb
on aa.id2=bb.id2
or bb.grp is NULL
order by aa.no
------------------
今夏には、8.3 が出るかもしれない?ので、それまで待つかもしれません。
619NAME IS NULL:2007/04/26(木) 01:55:56 ID:???
>>618
いや、だから、いのっち父さんとこの最新版8.2.3.1使ったらどうなる?
620NAME IS NULL:2007/04/26(木) 02:09:55 ID:Oh0EKWzP
>>619
すみません。確認中でした。

http://www.postgresql.org/ftp/odbc/versions/msi/

psqlodbc-08_02_0300.zip
の導入で、直ったようです。

随時、更新しているドライバ等もあるのですね。
いのっち父さん、貴殿に感謝です。
ありがとうございました。
621NAME IS NULL:2007/04/26(木) 02:55:09 ID:Oh0EKWzP
>>619
>>620
すみません。早とちりでした。(^^;
せっかく教えて頂いて申し訳ありません。

ODBC『PostgreSQL Unicode』のバージョン、
8.02.03.00(2007/04/15版)でもエラーが出ます。

ver8.2.3 では、
8.0.3 のODBCドライバ『PostgreSQL』
7.03.02.08(2004/02/23版)を利用するかもしれません。

随時、ドライバ情報を参照させてもらいます。
ありがとうございました。
622NAME IS NULL:2007/04/26(木) 03:12:23 ID:???
>>621
いのっち父さんのところの最新版の8.2.3.1でも出るなら
掲示板に書き込んで(バグなら)フィックスしてもらわないと
いつまでたっても直らないかもよ。
現象が再現出来るなら是非とも報告をお願い致します。
623NAME IS NULL:2007/04/26(木) 03:35:23 ID:Oh0EKWzP
>>622
ありがとうございます。
今、
http://www.geocities.jp/inocchichichi/psqlodbc/psqlodbc35w.zip
で、
psqlodbc35w.dll
pgxalib.dll
pgenlist.dll
(psqlodbc35w.dllの製品バージョン 08.02.0301 2007/04/24 20:20版)

:\Program Files\PostgreSQL\8.2\bin
の配下へコピーして再起動しましたが、やはり、エラーが出ます。

ちなみに、Windows2000です。
別途、同じようなテーブル構成を別に作成して、
そのようなSQL文で、発生するようでしたら、
今度、掲示板へ報告したいと思います。

今夜はありがとうございました。
おやすみなさい。
624NAME IS NULL:2007/04/26(木) 03:49:06 ID:Oh0EKWzP
補足です。
ver8.2.3の
pgAdminIII でのSQL文では、エラーは出ません。
625NAME IS NULL:2007/04/26(木) 08:18:36 ID:Oh0EKWzP
-- ■下記のSQLの場合、table2 にレコードがなく、
-- table0のレコードに対してNULLのカラムとしてレコード抽出される場合、
-- というエラーが出るようです。

select
case
when aa.grpid=0 then aa.name
else null
end as name1,
case
when aa.grpid=0 then null
else aa.name
end as name2,
aa.id,
aa.kbn,
aa.grpid,
bb.grp, --★NULLのカラムがエラー?
bb.name --★NULLのカラムがエラー?
from table0 aa left join
(
select * from table2
where grp=2
) bb
on aa.id=bb.id
or bb.grp is NULL
order by aa.no

-- 結局寝なかった。(^^;
626NAME IS NULL:2007/04/26(木) 08:38:55 ID:???
>>625
もうちょっと簡素な再現SQL文は見出せないの?
627NAME IS NULL:2007/04/26(木) 09:54:32 ID:Oh0EKWzP
>>626
すみません。
開発元へ報告しておきましたが、
簡易なパターンの調査はしておりません。
628NAME IS NULL:2007/04/26(木) 10:30:34 ID:???
簡易なパターンにすればみんなに追試してもらえるのに
629NAME IS NULL:2007/04/26(木) 11:55:11 ID:???
>>628
ちゅーか不具合報告の鉄則ですね。最小限の再現パターンを提示するのは。
まぁ、今回は再現環境一式を出してるから悪くはないけど。
630NAME IS NULL:2007/04/26(木) 13:02:21 ID:???
もう修正版アップされてたよ。はやっ。
631NAME IS NULL:2007/04/26(木) 16:50:23 ID:Oh0EKWzP
>>630
2007/04/26版で正常動作を確認しました。
開発元さん、アドバイス頂いた方へ感謝です。
632NAME IS NULL:2007/04/26(木) 17:07:07 ID:Oh0EKWzP
>>628-629
私の思い込みで、
簡単なパターンでの不具合とは思わなかったので、
できるだけ実行環境に近いものを提示しました。
ツールを作成したので、テストや比較の検証も少し楽になったので、
調べてみました。
---------------
select
bb.grp
from table0 aa left join
(
select * from table2
where grp=2
) bb
on bb.grp is NULL
---------------
-- ★grp int2 型です。
たぶん、数値へのNULLが原因だったのかもしれません。
誰でもよく間違うバグでしょうか。。。
逆に、今まで報告がなかったほうが不思議なくらい簡単なSQLでした。
あまりv8.2.3は使用してないのかな?
それとも単純なSQL利用者が多いのかなぁ?。。。

私は、まだ8.0.3を使用しているので、急いではいませんでした。(^^;
8.0.3では、トランザクション利用で問題が出ているようなので、
8.2.3での基本的な検証ができた後、そろそろ移行したいと思っています。
633NAME IS NULL:2007/04/26(木) 18:51:02 ID:???
8.2.xはまだ様子見中だからなあ
634NAME IS NULL:2007/04/26(木) 19:45:20 ID:???
なんで8.0.3とか8,2,3とか中途半端なバージョンなのか分からないが
8.2.xは自分とこの環境では問題が出たから、まだ8.1.xを使ってる。

ところで、最初っから思ってたんだけど、これって8.2.xの問題という訳ではなく
8.2.x同梱のODBCドライバの問題、でしょ?
なんか本体のバージョンと話がごっちゃになってて分かりにくいんだけど。
そういう話なら
・8.2.x系列を使っている人はまだまだ少ない(8.2.xで特定のSQL文が遅くなった報告ちらほらあり)
・Windows版を使っている人が少ない
・インタフェースとしてODBCを使っている人が少ない
からでしょ。圧倒的に。

あと、提示された最小限(?)のSQL文てかなーり奇妙に見えるんだけど。
where grep=2 で on bb.grp is NULL で select bb.grp ?
635NAME IS NULL:2007/04/27(金) 01:07:53 ID:SOVAIhWg
>>634

私のところでは、当初、8.1.x で問題があったので、
8.0.3 のまま利用しています。
どのバージョンが中途半端なのか評価していないのでわかりませんが、
8.1.x が安定しているようでしたら、8.1.8 を使ってみたいと思います。

>最小限(?)のSQL文

そのSQL文の解説、評価をしても無意味ですね。
されるなら、元のSQLの >625 を参照して下さい。
636NAME IS NULL:2007/05/07(月) 17:56:22 ID:kfw86U9I
データベースをUTF-8にすると、フィールドサイズはバイトでなく、文字数として扱われますよね。
varchar(5)であれば、全角5文字もOKってな具合に。

UTF-8だとASCIIが1バイトで日本語が3バイトですが、
UTF-8でDBの容量見積もりする際は、単純に倍でOK?
637NAME IS NULL:2007/05/07(月) 18:04:00 ID:???
>>636
格納する文字種によるので一概には何とも。

そのカラムに日本語も格納される可能性が高いと思われるなら1文字3bytesで見積もるし、
確実にシングルバイトの文字しか入ってこないなら1文字1byte。
Unicode全部想定すれば1文字4bytesだってあり得るから、
多言語対応で考えるなら1文字4bytesで見積もるよ。

とりあえず概算でよけりゃ1文字2bytesでもいいんじゃね?
638NAME IS NULL:2007/05/07(月) 18:06:25 ID:???
>>636
> データベースをUTF-8にすると、フィールドサイズはバイトでなく、文字数として扱われますよね。
別にUTF-8でなくとも、文字数だけど。7.4あたりで仕様変更されてから。
639NAME IS NULL:2007/05/07(月) 18:57:27 ID:???
EUC_JPでも漢字1文字が長さ1だよ
640NAME IS NULL:2007/05/07(月) 21:18:36 ID:kfw86U9I
postgreのデータ容量見積もりってどうしてる?
参考になるものありますか。
641NAME IS NULL:2007/05/08(火) 00:35:41 ID:???
失礼します。

postgre8.0.3に、既存データを移行しようとしています。

移行テストに際し、開発用のdbをダンプし、
同じサーバーに作成した新規dbにリストアしました。
その後旧データを用意して移行用スクリプトを流し始めたところ、20/40程度のテーブルを消化した段階で、
応答がなくなっってしまいました。
調査したところ、orderというテーブルに対するあらゆるsqlの応答速度が極端に低下していました。

移行前で、orderの中身は0件の状態で、
 select * from order = 60秒
 delete from order = 77秒(0件を更新しました)
 select count(*) from order = 応答なし。
上記のような遅さになっています。

この状況から考えられる原因として、どのようなものがありますでしょうか。
試したことを以下に列挙します。

 ・postgresリスタート(状況変わらず)
 ・サーバーリブート(状況変わらず)
 ・デッドロックのチェック(そもそもdeleteが出来てしまっているのですが、一応調べました。結果問題なし)
 ・使われるはずのsequenceチェック(63万ちょいまでカウントされていました。1にセットしなおしましたが、状況変わらず)
 ・依存関係にあるテーブルのデータチェック(⇒ゴミを全て削除した結果、単純なselect分は2-3秒まで短縮されました。0件ですが)

テーブルをドロップして再度作ろうかとも思ったのですが、フレームワークのtblで依存関係が非常に複雑になっており、
単純には消せない為、これは行っていません。

データベース全体ではなく、特定のテーブルのみ遅くなると言う状態が初めてで、
原因の見当が付きません。
わかる方いらっしゃいましたら、ご教授お願いしますm(_ _)m
642NAME IS NULL:2007/05/08(火) 02:17:29 ID:???
VACUUM ANALYZE かけました?
643NAME IS NULL:2007/05/08(火) 04:08:22 ID:???
>>642
レスありがとうございます!

VACUUM ANALYZE…やってないです。
今ググって意味を調べたってレベルです。。
何回も見てたページのど真ん中に載ってました。。
依存関係のあるテーブルをいじった際に応答速度が変わったって所から、
あやしい感じですね。。明日朝一で試してみます!
ありがとうございました!
644NAME IS NULL:2007/05/09(水) 11:35:42 ID:???
Npgsql+ironPythonで接続して、vacuumを掛けようと下記のコードを用意しました。
これを実行すると、エラーが発生して([Error:57014 : canceling statement due to userrequest])処理が中断されてしまいます。
VacuumのようなSQLは.NETのExecuteNonQuery()で実行することはできないのでしょうか。

import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
from System.Windows.Forms import *

clr.AddReferenceByPartialName ('System.Data')
clr.AddReferenceToFile ('Npgsql.dll')

from System.Data import *
from Npgsql import *

#接続文字列
connstr = 'Server=XXX.XXX.XXX.XXX;Port=5432;User ID=hoge;Password=hoge;Database=hoge;Encoding=UNICODE'

def vacuum (conn):
    cmd = NpgsqlCommand('VACUUM',conn);
    ret = cmd.ExecuteNonQuery()
    print "done:" + ret

def main():
    conn = None
    try:
        conn = NpgsqlConnection (connstr)
        conn.Open ()
        test(conn)
    finally:
        if not conn is None:
            conn.Close ()

if __name__ == '__main__':
    main()
645NAME IS NULL:2007/05/09(水) 17:07:05 ID:???
>>644
たぶん、タイムアウトしていると思われ。
cmd.CommandTimeoutを長めに取るか、いっそ0にして終わるまで永久的に待機させるか。
一旦psqlなりPgAdminなりでVacuumを実行してみてから試せば、Vacuum時間も一時的に
短くなるから確認しやすいだろう。
646NAME IS NULL:2007/05/10(木) 21:55:44 ID:???
レスありがとうございます。
CommandTimeoutを0に設定することで、無事にVacuumを実行することができました。
647NAME IS NULL:2007/05/11(金) 00:45:25 ID:LmqbBaoB
初歩的な質問なのですが、テーブル内のOIDをdeleteすればそれに対応するラージオブジェクトも削除されるんでしょうか
されないのならどうすれば良いのですか?
648名無し:2007/05/16(水) 05:27:18 ID:???
649NAME IS NULL:2007/05/19(土) 23:42:29 ID:dKYDsDbp
APIの変数、関数名がクソなんだが。読みにくくて仕方ない。
650NAME IS NULL:2007/05/20(日) 12:42:14 ID:???
能力ない人は無理して読まなくてもいいんじゃないかな。
651NAME IS NULL:2007/05/20(日) 16:20:52 ID:WPBssusO
判りにくい変数名のコード読める事を能力だと思ってる奴ってまだいるんだね。
読めるにこした事はないけど、一貫した基準で初めて見た人でも判る名前を付けるのが能力だよ?
まぁpostgresql何ぞで仕事してる奴に生産性の話しても仕方ないか。
652NAME IS NULL:2007/05/20(日) 18:35:09 ID:???
> 判りにくい変数名のコード読める事を能力だと思ってる奴ってまだいるんだね。

保守する現場だと普通に必要な能力だと思うけどな。

> 一貫した基準で初めて見た人でも判る名前を付けるのが能力だよ?

コーディングルールに従うだけのことをわざわざ「能力」と言うの?
ある意味能力の1つだけど、ずいぶんレベルの低い話をしてるんだね。
653NAME IS NULL:2007/05/20(日) 21:48:31 ID:???
下っ端が何か言ってまーす。
654NAME IS NULL:2007/05/20(日) 21:50:42 ID:???
まぁ、言いたいことはたくさんあるが、とりあえずそのクソと思われる
変数名・関数名を挙げてみてよ。
655NAME IS NULL:2007/05/21(月) 09:15:11 ID:???
すみません、教えてください。
PostgreSQL8.1.4なんですが、カタカナだけの列を基準に、
50音順に並べ替えたいのですが、期待通りになってくれません。

DB作成時に --nolocaleを指定しろっていうのは発見したのですが、
すでに運用中のDBなので、できればDBの再作成はしたくありません。
なにか他に手段はありませんでしょうか?
656NAME IS NULL:2007/05/21(月) 17:51:27 ID:???
ドキュメントを見る限り、LC_COLLATEとLC_CTYPEはあとからの変更は無理みたいだね。
どこか変えてインデックス再構築とかあるのかもしれないが、ちょっとわからん。

しかし現行で動いてるDBをそのまま移行するのは手間ではないよ。
ものすごくでかいとか、止める暇が無いくらい頻繁に更新してるんでもない限り。
657JPUG中の人:2007/05/21(月) 18:56:27 ID:spUpon8Y
今年もカンファレンスやります。今回は秋葉原です。来てね〜

http://www.postgresql.jp/
658NAME IS NULL:2007/05/21(月) 19:47:37 ID:???
>>657
こんなところでやるの? こわいよぉ。

■ アキバ ■
1位 上気した孫策はみパン・ブルマでエロ過ぎ!
そして製品版は透明化された下着の天使さん!
http://ascii.jp/elem/000/000/035/35668/?jpm
2位 委員チョはミニスカ・エロボディで縞パンツ!
覗き穴から見た貧乳少女は裸ん坊だったっ!
http://ascii.jp/elem/000/000/035/35299/?jpm
3位 水玉パンツと旧スク水、メイド服は我らマニアにとって三種の神器である!
http://ascii.jp/elem/000/000/034/34376/?jpm
4位 アイドルマスターが早くも純白コットンで登場!
そして魑魅魍魎のエロの数々が大漁っ!
http://ascii.jp/elem/000/000/036/36133/?jpm
5位 危険過ぎで閲覧禁止だ! バスト・ぽろ〜ん! ヒップ・ぺろ〜ん!
http://ascii.jp/elem/000/000/033/33942/?jpm
659NAME IS NULL:2007/05/24(木) 23:59:00 ID:G0lbvSZi
mac osxにインストールして使っています。
usb接続のサブHDDにDBを作りたいのですが、下記のようなエラーで上手く行きません。


ユーザ名$ initdb -D /Volumes/SecondDisk/Data/
(中略)
creating template1 database in /Volumes/SecondDisk/Data/base/1 ... FATAL: could not link file "pg_xlog/xlogtemp.1903" to "pg_xlog/000000010000000000000000" (initialization of log file 0, segment 0): Operation not supported

サブの方はFAT32でフォーマットしてあります。
対処法ご存知でしたらお願いします。
660NAME IS NULL:2007/05/25(金) 02:57:18 ID:PMew0+mx
>>655
どういうときに並べ替えをされたいのか、わかりませんが、
なんらかのプログラム言語を使用しているのでしたら、
並べ替え用の列をソフトウェア上の変数やグリッドなどに追加して、
対応してみるとかは?
661NAME IS NULL:2007/05/25(金) 13:44:29 ID:DPNedvr4
select で他のDBを参照する方法ってあるのでしょうか?

select * from table1 as t1, DB2::table2 as t2 where t2.id = t1.id ....

みたいな感じ
662NAME IS NULL:2007/05/25(金) 14:27:13 ID:???
>>661
dblinkだったかな
663NAME IS NULL:2007/05/26(土) 06:08:39 ID:???
Win版のPostgreSQL8でちゃんと動く、レプリケーションの仕組みってあるの?
pgpool とかは unix系専用みたいだし。

そういうことやりたいのならMySQLなのかしら・・・。
664NAME IS NULL:2007/05/26(土) 06:27:33 ID:q4cdBz9a
>>659もよろしく。
665NAME IS NULL:2007/05/27(日) 02:52:31 ID:???
osxでFAT32でさらに外付けか、、、マニュアルでリンクファイル作れる?
666NAME IS NULL:2007/05/27(日) 02:53:26 ID:???
>>663
Slony-I待ち
667NAME IS NULL:2007/05/27(日) 04:53:10 ID:hFVpTI5x
>>659
だれも試さんだろ
668NAME IS NULL:2007/05/27(日) 09:21:41 ID:???
>>659
一応自己解決という事で、報告。というか勉強になったので自慢させてくれ。

ソースをほじくり返してみたら”could not link file”のメッセージを吐く所は実質一カ所で、link()関数失敗時のエラーメッセージ。
link()関数のmanに曰く、

そもそもlink()関数で作ったハード・リンクはファイル・システムを跨げない、
ファイル・システムがハード・リンクをサポートしていない場合もエラー。

ソースコードを変えて、link()でなくてrename()関数を使うようにしてmakeし直してinitdbすると659の問題は発生しませんでした。
が、今度はアクセス権の指定が正しくないからといってdb作ってサーバに入れない。
FATはアクセス権設定できないので、諦めてサブHDDをmac本体と同じフォーマットにして再度make。
したら、見事に成功。めでたしめでたし。

ご清聴ありがとう。
669NAME IS NULL:2007/05/27(日) 10:37:11 ID:???
いや、、、FATがアクセス権設定できないのなんてみんなわかってるだろ。
それでもあえてやろうという質問かと思ったら、フォーマットしていいのかよ・・・

WindowsだとFAT32でも何とか使えるし。お勧めはしないけど。
670NAME IS NULL:2007/05/27(日) 22:20:11 ID:???
あ、そうなの。おれ馬鹿じゃん。
リンクエラーの所も判った上でスルーだった訳っすか。
671NAME IS NULL:2007/05/28(月) 16:16:47 ID:???
リンクエラーはMacでやるチャレンジャーがいなかっただけかと
672NAME IS NULL:2007/05/31(木) 22:12:17 ID:T1+g34Os
>>669
ほんとだな。そんな重要なトコ変えちゃっていいならOS変えろよみたいなアドバイスしてたよな(w
673NAME IS NULL:2007/06/03(日) 12:14:35 ID:???
それは流石に話が違うんでは。
674NAME IS NULL:2007/06/11(月) 13:10:06 ID:Aqq3nwiZ
left join で悩んでいます。誰か教えてください。
t0
i
---
1
2
3
4
5
6
7
8
9
--------------
t1
i | j
---+---
1 | a
2 | b
4 | c
--------------
t2
i | j
---+---
1 | x
2 | y
3 | z
--------------
t3
i | j
---+---
1 | o
2 | p
5 | q
--------------
select a.i, tt1.k1, tt2.k2, tt3.k3
from ((((select i from t0) a left join
(select i, j as k1 from t1) tt1 on a.i=tt1.i) left join
(select i, j as k2 from t2) tt2 on a.i=tt2.i) left join
(select i, j as k3 from t3) tt3 on a.i=tt3.i)
where
tt1.k1 is not null or tt2.k2 is not null or tt3.k3 is not null;

i | k1 | k2 | k3
---+----+----+----
1 | a | x | o
2 | b | y | p
3 | | z |
4 | c | |
5 | | | q
※t0のテーブルを使用しないで同じ結果がほしいのですが、
うまくいきません宜しくお願いします。
675NAME IS NULL:2007/06/11(月) 14:35:11 ID:???
>>674
LEFT JOIN じゃなくてFULL JOIN
k1〜k3 の別名は端折るが、
SELECT * FROM t1 FULL JOIN t2 USING(i) FULL JOIN t3 USING(i);
676NAME IS NULL:2007/06/11(月) 15:01:45 ID:Aqq3nwiZ
>>675
助かりました。
有難うございました。
少し感動です!
677NAME IS NULL:2007/06/12(火) 09:28:41 ID:ZoyGBZu/
すいません。助けてください。
PostgreSQL8.2.3をWindowsXPのサービスで動かしているのですが、
不特定のタイミングで
FATAL: could not reattach to shared memory (key=6561001, addr=01D20000): Invalid argument
というエラーを出し、まったく応答しなくなります。
対処法をご存知の方おられましたら、ご教授願います。
678NAME IS NULL:2007/06/12(火) 09:36:39 ID:???
>>677
ググるとこんなのが出てくるが。
http://archives.postgresql.org/pgsql-bugs/2006-05/msg00027.php
679NAME IS NULL:2007/06/12(火) 10:11:01 ID:ZoyGBZu/
>>678
アンチウィルスソフトは止めてあります。
680NAME IS NULL:2007/06/12(火) 10:12:59 ID:???
止めてるってことはインストールはしてるんだね。
プロセス生き残ってたりしない?
681NAME IS NULL:2007/06/12(火) 10:17:16 ID:???
どっちにしてもディスク周りに問題があると出るようだな
ドライブ代えて試してみては
682NAME IS NULL:2007/06/12(火) 13:25:52 ID:???
>>680
止めていると思ってたんですが動いてました。
どうもNOD32が原因のようです。
ありがとうございました。
683NAME IS NULL:2007/06/13(水) 03:00:13 ID:lM41+/Yh
外部ファイルにSQLを書いてるんですけど、
その中にコメントって書けるんですか?
684NAME IS NULL:2007/06/13(水) 09:21:55 ID:UeiB7K01
質問です。
「create table foo as select * from bar;」というSQLだと
COPYコマンドというものを使った方がいいんでしょうか?
685NAME IS NULL:2007/06/13(水) 10:10:20 ID:???
>>683
コメントは -- で始まる
686NAME IS NULL:2007/06/13(水) 10:12:35 ID:???
/* これも使えるか */
# MySQLだとこれもかな?
687NAME IS NULL:2007/06/16(土) 06:51:44 ID:hWklptmu
>>685
遅くなったけどまじサンキューです!
C言語形がつかえるんですね!
688NAME IS NULL:2007/06/16(土) 22:10:38 ID:9eh8zkQc
>>687
将来的に別DBへの移行を考えてるなら -- にしておいたほうが無難だよ。
689NAME IS NULL:2007/06/17(日) 13:40:33 ID:???
一応 /**/は標準じゃなかったっけ
まあ対応してないのもあるかもなあ
690NAME IS NULL:2007/06/19(火) 13:50:36 ID:7TcVr+ml
ちとピントがずれてる質問かもしれませんが宜しくお願いします。
O/Rマッパーを噛ましているときに、ファントムが挿入されないようにするときの対処方ですが、
ストアドプロシージャーでロック掛けてるんですか?
それとも他の方法使ってらっしゃるんですか?
691NAME IS NULL:2007/06/19(火) 14:27:31 ID:7TcVr+ml
訂正

×ストアドプロシージャー
〇トリガー
692NAME IS NULL:2007/06/20(水) 08:58:12 ID:cIC7i3yO
データの更新履歴(挿入・更新・削除)ってログに残せるのでしょうか?
693NAME IS NULL:2007/06/20(水) 09:08:00 ID:???
>>692
log_statement = 'all'
でどう?
694NAME IS NULL:2007/06/20(水) 09:09:20 ID:???
>>693
modでいいのか
695NAME IS NULL:2007/07/02(月) 12:53:07 ID:NEpJtz1U
質問です
id: serial というカラムを持つ aTable にレコードを insert したとき、
挿入したレコードのidを取得するにはどうしたらいいのでしょうか?
696NAME IS NULL:2007/07/02(月) 13:37:30 ID:???
>>695
select文の最後に returning * を付けてみ。
ただしPostgreSQL 8.0 か 8.1 以上じゃないと使えないはず。
697NAME IS NULL:2007/07/02(月) 14:02:35 ID:???
>>696
おお、select じゃなくて insert into の最後に returning * を書いたらうまくいったよ
ありがとぉ
698NAME IS NULL:2007/07/02(月) 14:17:46 ID:???
returning って8.2からじゃないの?
699NAME IS NULL:2007/07/02(月) 14:27:02 ID:???
>>697
あー、insert文の最後だったw
寝起きでぼけてたw

>>698
ググったら 8.2 からだった。すま。
700NAME IS NULL:2007/07/02(月) 14:32:52 ID:???
insert into 〜;select currval('hogehoge_seq');
って一回で実行すると戻り値がそのシリアル値
701NAME IS NULL:2007/07/02(月) 14:32:54 ID:???
>>699
いやいや、助かったよ

バージョン確認せずに試したらうまくいった
今確認したら 8.2 だった ^^;;;

8.2 未満の時はどうやってたんだろうねぇ?
702NAME IS NULL:2007/07/02(月) 15:55:23 ID:???
SELECT nextval('hogehoge_seq');
してからその値を使いまわしてる
serial も省略しないでその値を使用
703NAME IS NULL:2007/07/03(火) 00:39:43 ID:???
>>701
おれは、挿入されたレコードの oid を取得して、その oid で再検索してた。
704NAME IS NULL:2007/07/03(火) 11:50:04 ID:???
SELECT last_value from hogehoge_seq;
してた
705NAME IS NULL:2007/07/05(木) 06:35:32 ID:emhuPB4D
ver 8.0.3
Win XP Pro Pentium4 2.8G メモリ1G で使用していますが、
CPUが高性能なサーバーに変えると処理速度のアップは期待できますかね?
数十万〜100万レコードの30秒〜1分以上かかるSELECT分の応答を
短縮したいんですけど。
テーブルやアプリケーションの設計を見直す方が
効果あるのは、わかっているんですがね。。。
チューニングの方は、インデックスを張るくらいしかしてませんが。

OSをServerに変更しても対して変わらないですよね?

とりあえず、ver8.2へバージョンアップして、
速度差を計測してみようとは思っていますが。

将来は、Linux版へも検討したほうがいいのかもしれないけど。
706NAME IS NULL:2007/07/05(木) 07:17:23 ID:???
>>705
設計見直す前に発行してるSQLだ。
とりあえずEXPLAIN PLAN見てから考えた方が良いと思うが。
707NAME IS NULL:2007/07/05(木) 09:50:06 ID:???
時間かかるのは、張ったはずのインデックスが使われて無い、というケースが多い
EXPLAIN でチェックすることと、VACUUM ANALYZE することからだな
708NAME IS NULL:2007/07/05(木) 14:49:40 ID:???
Win版に関しては新しければ新しいほどいいという偏見を持っているので、
いまさら8.0.3は論外だと思ってしまう。

にしても、1分かかるSELECTってインデックス使われていないとしか思えん。
709NAME IS NULL:2007/07/06(金) 01:59:42 ID:PG3xYQ8h
>706,707,708

ありがとうございます。
EXPLAIN は初めて知ったので勉強いたします。

SQLは、Group By やら、Union All などで、少し複雑になっています。

VACUUM は、実行してもそれほどの差はありません。

Index はpgAdminVで見る限りは、張れています。
実際にIndexが有効なのかどうかは、
解除してから、その差を確認すればいいのでしょうが、
そこまでは確認していません。

1テーブル46万レコードから
2つの条件で抽出で、100レコードを抽出した場合、
pgAdminVでの応答は、約6秒くらいです。

(例)
select * from table1
where code=1
and dateA='2007/07/06'

code,dateA には、Index を張っています。
日付を文字列にしたのは、あまりよくなかったかな。。。(^^;

ちなみに、
PRIMARY KEY (oid)
って、やっぱり邪道ですかね?。。。(^^;
710NAME IS NULL:2007/07/06(金) 09:20:39 ID:???
だからEXPLAIN使えばインデックス使ってるかすぐわかるだろ
先にそれやれと。
711NAME IS NULL:2007/07/06(金) 15:02:19 ID:???
インデックスは張れば必ず使われるってもんじゃないんです
それを確認するのがEXPLAIN
712NAME IS NULL:2007/07/06(金) 15:51:04 ID:PG3xYQ8h
見方がよくわかりませんが、
『EXPLAIN ANALYZE ・・・』の結果の
『QUERY PLAN』に
『Index Scan using』がないってことは、
インデックスが使われてないってことでしょうか?
713NAME IS NULL:2007/07/06(金) 16:39:29 ID:PG3xYQ8h
『Index Scan using』の個所は1箇所のみで、
プランに反映させるには、どういったチューニングをしたらよいのでしょうか?
714NAME IS NULL:2007/07/06(金) 18:10:11 ID:???
まずは、どこに時間がかかっているのかを見て
インデックスが無ければ作り、あるのに使われてなければ使うようにすればいいわけで、
VACUUM ANALYZE しても使わないようなら、SQLそのものを変える必要もあるかも
715NAME IS NULL:2007/07/06(金) 21:46:48 ID:???
2つのフィールドを合わせたindexを作れば、
EXPLAIN で見たときに、index検索してくれるかも。

create index code_dateA_index on table1 ( code,dateA );
VACUUM ANALYZE table1;
716NAME IS NULL:2007/07/07(土) 01:14:05 ID:4yvS7a5G
ありがとうございます。

肝心の数十万レコードのテーブルには、
『Index Scan using』が1つもなかったことには、
ある意味、衝撃でした。(^^;

下記なども参考に、ver 8.2 へのバージョンアップも含め、
試行錯誤しながら、短縮を実現したいと思います。

http://www.postgresql.jp/blog/71
http://www.postgresql.jp/blog/78
717NAME IS NULL:2007/07/08(日) 09:59:27 ID:???
今から新規導入するなら8.2系がいいですか?それとも8.1系が枯れていて
いいですか?
ちなみに導入対象は業務系システムです。
718NAME IS NULL:2007/07/08(日) 10:16:30 ID:???
>>716
create index code_dateA_index on table1 ( code,dateA ); は試してみた?
2つのフィールドを合わせたインデックス作れば、
ほぼ確実にインデックス検索されるはずだけど。

>>717
8.2でもう十分安定してる。
719NAME IS NULL:2007/07/09(月) 10:04:21 ID:???
>>709
> code,dateA には、Index を張っています。
この例の場合、別々に張っても使われないと思われ。
720NAME IS NULL:2007/07/10(火) 18:52:06 ID:???
失礼します。

CentOSにPostgreSQL 8.0.12を乗せた環境を構築しようとしています。
資料の一切無い既存アプリの移行の為、載っている各モジュールのバージョンを合わせながら作業をしているのですが、
Postgresを手動でインストール後、データのリストア時に下記のようなエラーが出るようになってしまいました。

------------
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.connectby(text, text, text, text, integer, text) does not exist
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.connectby(text, text, text, text, integer) does not exist
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.crosstab(text, integer) does not exist
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.crosstab2(text) does not exist
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.crosstab3(text) does not exist
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.crosstab4(text) does not exist
ERROR: could not access file "$libdir/tablefunc": そのようなファイルやディレクトリはありません
ERROR: function public.normal_rand(integer, double precision, double precision, integer) does not exist
------------

色々検索してみたのですが、上記エラーの情報が無い状態です。
どなたかこのようなエラーについてご存知の方いらっしゃいますでしょうか。
ご教授の程、宜しくお願い致します。。
721NAME IS NULL:2007/07/10(火) 19:04:03 ID:???
リストアってことは前の環境があるのでは?
手動でインストールというのは、ソースからコンパイルしたということかな?
そのソースのあるディレクトリの、 contrib/tablefunc はインストールした?
722NAME IS NULL:2007/07/10(火) 19:07:37 ID:???
>>720
contrib/tablefunc/README.tablefunc
などを読みましょう。
723NAME IS NULL:2007/07/10(火) 20:06:49 ID:???
>>721-722
ありがとうございます!
下層フォルダの物は、見てもいませんでした。。
インストールしてみます。
724NAME IS NULL:2007/07/13(金) 19:52:38 ID:???
あれ?JDBC4.0に対応してる?
予想外に精力的な活動をしてたんだね
725NAME IS NULL:2007/07/14(土) 10:09:41 ID:s1oJSC8U
質問です。
2つのテンポラリテーブルtbl1、tbl2をまとめたいのですが
INSERT INTO tbl1 (id,count) SELECT * FROM tbl2;
SELECT * FROM tbl1 GROUP BY id;
とすれば、結果の表示が出来るのですけど、UPDATEを使って一行で同じ結果を得るには…
と言うか、表示の時に集計しなくて済むようにするにはどの様にすれば良いのでしょうか。

tbl1
id | name| count
---+-----+------
1 |user1|
2 |user1|
3 |user1|

tbl2
id |count
---+------
1 |10
2 |20

結果
id | name| count
---+-----+------
1 |user1|10
2 |user1|20
3 |user1|
726NAME IS NULL:2007/07/14(土) 11:09:22 ID:???
> と言うか、表示の時に集計しなくて済むようにするにはどの様にすれば良いのでしょうか。

データ挿入する毎に集計結果を更新すればいいんじゃないかな。
727NAME IS NULL:2007/07/14(土) 11:17:31 ID:???
idはidって名前付けているくらいだから主キーなのかな?
update tbl1 a set count = ( select count from tbl2 b where b.id = a.id )
こんな感じか? PostgreSQLで動くのかどうか分からないけど ^^;
一応、Oracleではこれでいいような気がするけど違っていたらすまそ
728725:2007/07/14(土) 17:57:21 ID:s1oJSC8U
>>726
ありがとうございます。
更新はデーター挿入と同じSQL文で可能なのでしょうか?
勉強してみます。

>>727
ありがとうございます。
自分で書いたサブクエリはエラーばっかりで2日近くも弄ってましたが
ご教示頂いたSQLですんなりと動きました。ほんとに助かりました。
729727:2007/07/14(土) 18:06:26 ID:???
>>728
基本的な書き方なので大丈夫だろうなとは思っていたけど
動作確認してなかったので動いて良かったです^^
730NAME IS NULL:2007/07/18(水) 04:29:19 ID:F4zU+wmw
>>715
>>718
ありがとうございます。
まだ試していません。

ver 8.0.3 から ver8.2.4 へバージョンアップで限定的にテストしたところ、
1/2〜1/3の時間に短縮されました。
まだ、ver8.2.4 でのEXPLAIN で Index が使用されているかどうかの確認はしていません。
731NAME IS NULL:2007/07/18(水) 05:17:29 ID:F4zU+wmw
>>719
ありがとうございます。
732NAME IS NULL:2007/07/18(水) 05:19:58 ID:F4zU+wmw
>>709

ver 8.0.3 で、テストしてみました。
2つにIndex を張ると、約1/2〜2/3に短縮されました。
ちなみに、もうひとつフィールドを増やし、
3つだと逆に3倍ほど遅くなってしまいました。
Index の張り方次第で、チューニングできそうです。

■それぞれ別に1つずつIndex を張った場合
5906ms
■2つにIndex を張った場合
3406ms
■3つにIndex を張った場合
15500ms

(例)
select * from table1
where code=1
and dateA='2007/07/06'

■それぞれ別に1つにIndex を張った場合
CREATE INDEX table1_idx1
ON table1
USING btree
(code);
CREATE INDEX table1_idx2
ON table1
USING btree
(code2);
CREATE INDEX table1_idx3
ON table1
USING btree
(dateA);

■2つにIndex を張った場合
CREATE INDEX table1_idx4
ON table1
USING btree
(code,dateA);

■3つにIndex を張った場合
CREATE INDEX table1_idx5
ON table1
USING btree
(code,code2,dateA);
733NAME IS NULL:2007/07/18(水) 13:00:41 ID:???
PostgreSQL8.2+RedHATーES4で試験運用していますが、
$PGDATAをまっさら初期と同じ様にしたいのですけれども、
どうすればよいでしょうか?

またそうすることの何かリスクはあるでしょうか?

ご教示いただけると幸いです。
734NAME IS NULL:2007/07/18(水) 16:39:08 ID:???
>>733
$PGDATAをどっか移して
$PGDATAは改めて initdb すればいいよ。
735733:2007/07/18(水) 22:32:25 ID:???
>>734

ありがとうございます。
736NAME IS NULL:2007/07/19(木) 11:41:17 ID:???
initdb は、--no-locale でね。
737NAME IS NULL:2007/07/19(木) 17:10:31 ID:???
最近あるOSS(MySQL対応)の、
PostgreSQL対応をさせようという企画に関わっているのだけど…
どうやったら同士を増やせると思いますか?

あ、関わっているだけで直接コーディングしているわけではないので
細かいところはわかってないかもしれません;;
738NAME IS NULL:2007/07/19(木) 17:25:49 ID:???
宣伝すればいいんじゃない?
オレはそういうのがあったら参加したいかなあ
739NAME IS NULL:2007/07/19(木) 20:13:38 ID:???
>>736

ども!
740NAME IS NULL:2007/07/19(木) 22:15:01 ID:???
grantを使ってテーブル単位で権限を与える方法はわかったのですが
データベース単位で権限を付与する方法がわかりません。どうすればいいのでしょう?
741NAME IS NULL:2007/07/19(木) 23:20:31 ID:???
DB単位って、例えば?
742740:2007/07/19(木) 23:51:31 ID:???
---------Database---------
│ tableA        │
│ tableB        │
│ tableC        │
--------------------------
こんな感じのをデータベースを指定して一気に権限付与できないかなってことです
743NAME IS NULL:2007/07/20(金) 11:31:15 ID:bJm05vQT
ver 8.0.3 から ver 8.2.4
にバージョンアップして全般的に、高速になりました。
遅かった検索が、1/4〜1/3程度に高速化。
これには、満足。

しかし、特定のGroup by の集計で、遅くなるものありました。
2秒で検索できていたものが、60秒以上かかり、
これを複数使用していると、数分〜十数分はかかるので、
応答なし、ハングアップかと思った。
これじゃ使えないなぁ。

バージョンアップされる方は、要注意です。

ver 8.2.3 で試せばよかったのかなぁ。。。
744NAME IS NULL:2007/07/20(金) 11:36:14 ID:bJm05vQT
ver 8.2.4 のインストール中ですが、
特定のパソコンで、
インストーラーでエラー。
OS:Windows 2000 SP4

『モジュール
C:\Program Files\PostgreSQL\8.2\bin\pgoledb.dll
で登録に失敗しました。
HRESULT -2147024770。
サポート担当者に問い合わせて下さい。

のメッセージが出る。

ドライバOLEDBを選択せず、インストールすれば、とりあえず回避できます。
Windows 2000 SP4 でもエラーにならないPCもありました。
745NAME IS NULL:2007/07/20(金) 11:43:34 ID:HKe463Bn
746NAME IS NULL:2007/07/20(金) 14:21:46 ID:bJm05vQT
>>745
ご情報、ありがとうございます。
ずっと以前からあったんですね。
747NAME IS NULL:2007/07/20(金) 14:23:28 ID:bJm05vQT
>>743
とりあえず、SQLの見直しで回避しました。

■ver 8.0.3 では問題ないが ver 8.2.4 で極端に遅くなったSQL
-------------------
■改善前■
-------------------
select
aa.code,
bb.code2,
sum(aa.suryo) as sum_suryo
from
table1 aa
left join table2 bb
on aa.code2=bb.code2
where
aa.hizuke='20070720'
and bb.kbn='0'
group by
aa.code,
bb.code2

-------------------
■改善後■
-------------------
select
cc.code,
bb.code2,
cc.sum_suryo
from
table1 aa
(
select
aa.code,
aa.code2,
sum(aa.suryo) as sum_suryo
from
table1 aa
where
aa.hizuke='20070720'
group by
aa.code,
aa.code2
) cc
left join table2 bb
on cc.code2=bb.code2
where
bb.kbn='0'
748NAME IS NULL:2007/07/24(火) 16:25:00 ID:???
すいません。教えてください。

bit形式のデータをtextなりvarcharにキャストすること
できませんか?

select B'101010' :: text;

みたいな感じで。
749NAME IS NULL:2007/07/24(火) 17:29:01 ID:???
\df で見てもそれらしいの無いね。
関数作るのが手っ取り早いか?
750NAME IS NULL:2007/07/24(火) 18:27:30 ID:???
>>749

PLでできるかなぁ?
ちょっと困っています。
751NAME IS NULL:2007/07/24(火) 18:33:24 ID:???
>>748
一文字に収まる想定?
select chr(B'101010' :: integer);
とか、どうにかなるんじゃない?
752NAME IS NULL:2007/07/24(火) 19:30:34 ID:???
>>751

バイナリをintにして文字コードにする(cha)
ではなくて、人間からみたら同じ'1010'なんだけど、
あくまでもバイナリのカラムに入るような値を文字列textなりvarcharに入る値
にしたいのです。

cで組めばできるんだろうけど、posgreで組んだことないです。
753NAME IS NULL:2007/07/24(火) 22:42:51 ID:???
>>752
case (バイナリ & B'1000') = B'1000' then '1' else '0' end ||
case (バイナリ & B'0100') = B'0100' then '1' else '0' end ||
case (バイナリ & B'0010') = B'0010' then '1' else '0' end ||
case (バイナリ & B'0001') = B'0001' then '1' else '0' end

ぐらいしか思いつかん。
754NAME IS NULL:2007/07/25(水) 00:15:44 ID:???
>>753
なるほど。

一個一個AND取っていくやり方があるなら
ビットシフト処理でフラグを拾っていく
PLもできそうですね。

一瞬、

bit | txt
------------------
1010 | 1010

みたいなテーブル作っちゃうのが
早いような気がしてきましたが。

755NAME IS NULL:2007/07/25(水) 06:48:36 ID:sY0o2URa
邪道かもしれないけどcstringを経由する。
=> select textin(bit_out(B'1010'));
 textin
--------
 1010
(1 row)
756NAME IS NULL:2007/07/25(水) 19:44:43 ID:???
>>755

す、すごい。
これってCの関数をコールしてるんでよね。

これでなんか問題なり制約がでてくること
ありますか?
もちろん移植性は悪いでしょうが。

757755:2007/07/25(水) 23:47:27 ID:CNk60Kvd
コードを見た人がギョっとする以外に特に問題は無いと思う。

うまく説明できる気がしないけど、
浮動小数点型だろうが幾何型だろうが、どんな型であっても
表示するときは文字列なわけだし、SQLで入力するときも
文字列なわけなので、内部でどんな風にデータを保持していても、
文字列(cstring)と変換可能なわけです。

それをやる関数がpg_type.typinputとpg_type.typoutputで、
ここでいうtextinとかbit_outとかがそれ。
758NAME IS NULL:2007/07/26(木) 06:53:50 ID:???
これで、「なんだかんだいっても、最後には俺のところに
戻ってくるんだろ」とか能天気に思っていたらコワス
759NAME IS NULL:2007/07/26(木) 06:54:30 ID:???
↑勿論誤爆です。
760NAME IS NULL:2007/07/26(木) 10:44:41 ID:???
>>757

なんとなくイメージはつきます。

あとは将来この処理をpgの関数としてwrapしたのが実装されると
いいなぁ。別に難しくないんだろうから。でもニーズはないかな。

ともあれありがとうございます。
761NAME IS NULL:2007/07/26(木) 17:30:39 ID:8A/qwV0/
Postgreって、あるレコードをUPDATEし続けた場合、見えているのは1レコードでも、
検索時にUPDATE回数分のレコードを検索対象にするってほんと?
結果は1件だけど、検索範囲がUPDATE回数分のレコードという意味です。
バキュームしないと、対象から消えないとか。
762NAME IS NULL:2007/07/26(木) 18:54:55 ID:dVEWGYsb
バキュームしないと物理レコードが減らないってことじゃないですか?
http://www.postgresql.jp/document/pg813doc/html/maintenance.html

別に論理的に削除された見えないレコードも
UPDATE したりしてるわけじゃないから、
バキュームをしていなくても、
物理レコードが極端に増加していなければ、
処理速度が著しく遅いと感じることはないと思います。

PostgreSQLのバージョンによって違うようですが、
処理速度が著しく遅く感じるのは、
おそらく、INDEXが有効に機能していなかったり、
複合的なSQL文場合の解析、内部処理に問題がある場合のようです。
その場合、SQL文の書き方を変えることができる場合だと、
改善できる可能性があるようです。
763NAME IS NULL:2007/07/26(木) 19:35:10 ID:dVEWGYsb
現在、1000レコードある場合、
ひとつの同じレコードを10回、UPDATEしたら、
見えているレコードは、1000レコードのままですが、
実際に存在している物理レコードは、
1010レコードあるってことですよね。

バキュームすると、
1000レコードに減るということだと思います。

例えば、
1000レコードしかない固定的なテーブルでも、
毎日、UPDATEを1000レコードに対して行うようなテーブルだと、
または、毎日、DELETE & INSERT で1000レコードに対して行う場合で、
バキューム処理をしていないと、
日に日に、物理レコードが増えていくことになりますよね。
そういうテーブルを毎日など参照する頻度が高いようなら、
バキューム処理を適時、行った方がよいということになりますね。

例えば、得意マスタのあるカラムに便利なように最新情報を保持しようと
全レコードに対して毎日などUPDATEしているような仕組み、設計だと、
日に日に、マスタの物理レコードが増えていきますね。

結局は、どんな仕組み、設計にするにしても、
UPDATEやDELETEは、必ず発生するわけですから、
バキューム処理は、適時行ったほうがよいということには、
変わりはないと思います。
764NAME IS NULL:2007/07/26(木) 20:17:51 ID:dVEWGYsb
ひとつ気になったことなのですが、
バックアップファイルのサイズですが、
フルバキュームをする前と
フルバキュームをした後を比較すると、
後の方がファイルサイズが大きいようですが、どうですか?

物理レコードの削除の領域より、なんらかの管理レコードの方が増えるからなのでしょうか?
765NAME IS NULL:2007/07/26(木) 20:26:38 ID:???
766NAME IS NULL:2007/07/26(木) 22:06:04 ID:dVEWGYsb
>>765
ありがとうございます。
すべて簡単には理解できない内容ですが、(^^;
参考になります。

ファイル容量の肥大は問題となるレベルではありませんが、
ver 8.3 の 新機能 HOT で、さらに高速になるのは、期待ですね。
767NAME IS NULL:2007/07/26(木) 22:09:11 ID:E0VDLWtx
761のいっていることの真相は?
768NAME IS NULL:2007/07/27(金) 00:18:37 ID:???
> 検索時にUPDATE回数分のレコードを検索対象にするってほんと?

「検索対象」というのには語弊がありそうだが、
MVCCも絡んでるし、有効かどうか選択されているはず。
(少なくとも7.x以前はそうだった)

参照トランザクションがなくなった時点で無効レコードに指定
していって、検索対象から外れりゃいいのだろうけど、
その判断をすべてVACUUM実行時にまわした結果かな。

ちなみに、トランザクションをアボートしても、その間で
発行されたINSERTやUPDATEでも不要領域は増えます。
769NAME IS NULL:2007/07/27(金) 07:28:50 ID:???
> 検索時にUPDATE回数分のレコードを検索対象にするってほんと?

7.3以降の話をすると、インデックスでの検索ならば、
「UPDATE後の次の検索」は、確かに空振り(ゴミも検索)がある。
ただ、そのときにインデックスにフラグが立つので、
2度目以降の検索では、無駄な行のピックアップはしない。

なので、最悪でも「2倍程度は損をしている」という理解でOK。
もちろん、検索が更新より多ければ、もっと効率は良くなる。
770NAME IS NULL:2007/07/31(火) 12:01:32 ID:jnuhsF8J
1回/秒の周期でアプリがテーブルの1行をUPDATEするため、
1回/時間で通常Vacuum(FULLでない)を行っていますが、
Vacuum実行時間帯に、稀にアプリの実行時間が、
平均300msecのものが、4〜7secになることがあります。
原因調査中ですが、通常Vaccumでも、ロックがかかるようなことがあるのでしょうか?
771NAME IS NULL:2007/07/31(火) 17:07:58 ID:NYEBxcjn
ロックというよりインデックスの再生成に時間がかかってるから処理できないとか?
とあんまポスグレ知らない俺が予想してみる
772NAME IS NULL:2007/07/31(火) 21:21:37 ID:???
>>770
起こる間隔が一定なら、チェックポイントかなぁ。
チェックポイントやbgwriterのまわり弄ってみて。
773NAME IS NULL:2007/08/03(金) 18:56:30 ID:???
pgpool-IIをパラレルモードで使おうと思うんだけど、
これってバックアップを取る場合は普通にpgpoolのポートに対してpg_dumpで良いの?
リストアもpgpoolのポートに対してpg_restoreで良いんだろうか。
pgpoolの開発サイトにその辺の事が載っていないので躊躇ってる。
あと、pgpoolはpgAdminIIIに対応しているのかしら?
774NAME IS NULL:2007/08/07(火) 10:38:55 ID:???
PostgreSQL8.1をLinuxで運用していて、
サボってかなりの期間vacuumを行わないでいたのですが、

vacuumdb -d sampledb
としたところ

NOTICE: number of page slots needed (41234) exceeds max_fsm_pages (20000)
HINT: Consider increasing the configuration parameter "max_fsm_pages" to a value over 41234.
VACUUM

てな感じでウォーニングが出てしまいました。

おそらくpostgresql.confでの”max_fsm_pages”の設定値を41234以上にすれば
良いとも思うのですが大丈夫でしょうか?

また設定をいじらず単にvacuum fullを行ったほうが良いとの情報もありますが、
8.1の場合どちらがいいのでしょうか。

またそのほかこの状況下でvacuum処理に関わるリスク、留意点は
何がありますでしょうか。(例えばdumpのバックアップは必須とか)

ご教示いただければ幸いです。よろしくお願いいたします。
775NAME IS NULL:2007/08/07(火) 11:19:30 ID:???
>>774 とりあえず、両方やれ。max_fsm_pagesを増やす & vacuum full
その後、autovacuum = on にして放置。
776774:2007/08/07(火) 11:55:29 ID:???
一度autovacuum = onでデータ整合がとれず
挙動がおかしかったので現在はoffにしています。
その時、あまりにもおかしかったのでちょっと躊躇しています。

また、vacuum full は一部バグがあるという情報が
あり、どうしたものかなぁとも考えています。

もう少し安心して作業できる手順なんかご経験であれば
お伺いしたいところです。
777NAME IS NULL:2007/08/07(火) 14:46:08 ID:???
> 一度autovacuum = onでデータ整合がとれず
仮にそんな挙動があったとしても、autovacuum が原因ではない。
autovacuumと、手でvacuumを叩くのとは、本質的な違いはない。

> vacuum full は一部バグがあるという情報
古いバージョンだと、高負荷時に問題があった。
最新版に入れ替えるか、いったんアクセスを止めたあと叩けば問題は無い。
ちなみに、autovacuum は、勝手に full することはない。

「安心」したいのならば、最新版にバージョンアップした上で、autovacuum = on にすべき。
よほどキルが無い限り、マニュアルで管理されていることほど危ないことは無い。
778774:2007/08/08(水) 07:04:49 ID:???
そんな簡単に最新バージョンにアップできるなら
極端な話vacuumもいらんのです。

バージョンアップしてデータ移行した時点は無駄なタプルは
ないわけですから、都度都度バージョンアップすればいいのです。

autovacuumは運用上高い負荷時に処理が
追い付かないことがあるようです。
マニュアルでもautovacuum、cronでのvacuum
かは運用形態にあわせて任意です。
一義的にautovacuumにせよとは書いていないと思います。
779NAME IS NULL:2007/08/08(水) 08:15:33 ID:???
774はたぶんものすごいバカ
780774:2007/08/08(水) 11:27:08 ID:???
ハイハイ ワタシハバカ デ アナタハ テンサイ デス
781NAME IS NULL:2007/08/08(水) 11:48:07 ID:???
>サボってかなりの期間vacuumを行わないでいたのですが、

autovacuumをあえて使わないんじゃなくてさぼってただけなんでしょ
cronでもautoでも好きなほう使えばいいじゃん
782NAME IS NULL:2007/08/08(水) 11:59:09 ID:???
>>776
手動でやるのがいいんじゃないかな。
自分の目で確認できるしね。
783NAME IS NULL:2007/08/08(水) 21:15:33 ID:???
autovacuum と cron を併用するのがベストだと思うけどなぁ。
どっちもサボっていた上に、まともに初期設定もしてないんだろ?
警告が出たあと取り乱しているのが滑稽だ。
784NAME IS NULL:2007/08/10(金) 16:50:38 ID:???
plpgsqlで分からないことがあるのでどなたかご教示ください。

例えば、戻り値の指定がSETOF RECORDである関数、
CREATE FUNCTION test(integer) RETURNS SETOF RECORD AS ...

があったときに、呼び出し側で、

SELECT * FROM test(1) AS t(id integer, id2, integer)
のように書く必要があるように思うのですが、関数側で呼び出しのAS以下を指定する方法は無いでしょうか。
返すRECORDが複雑になってくると、いちいち書くのが面倒くさいのです。

よろしくお願いいたします。
785NAME IS NULL:2007/08/10(金) 17:39:27 ID:???
>>784
関数側で指定すると言うことは、ある決まった型を必ず返すと言うことだよな。
CREATE TYPE testfunc AS (id integer, id2, integer);
って型を作っておいて、
RETURNS SETOF testfunc AS ...
ってすればいいんじゃね。
786NAME IS NULL:2007/08/10(金) 21:37:24 ID:???
>>784 「OUT引数」で調べてみて。
787784:2007/08/10(金) 22:27:48 ID:???
>>785
>>786
ありがとうございます。
とりあえず、785さんの方法で解決しました。
OUT引数についても調べて(み|い)ます。

ありがとうございました。
788NAME IS NULL:2007/08/15(水) 16:31:31 ID:???
8.3って、いつ出るんだ?
もう8月中旬だぜ。
789NAME IS NULL:2007/08/19(日) 19:12:26 ID:???
790788:2007/08/20(月) 17:07:38 ID:???
>>789
さんくす。夏に出るって記事を読んだもので、
てっきりもうすぐ来るのかとwktkして待ってたのだ。(´・ω・`)
791789:2007/08/21(火) 00:52:31 ID:???
http://d.hatena.ne.jp/ludia/20070731
http://archives.postgresql.org/pgsql-hackers/2007-07/msg00633.php
ついでに、betaが9月に出るんじゃないかって話はある。
792NAME IS NULL:2007/08/24(金) 00:25:17 ID:p0WYYhYJ
テーブルの作成について教えて頂きたいのですが。
itemテーブルのshopidには、shopテーブルのidのいずれかしか入力出来ないように制限することは可能でしょうか?
A店では品Aと品Bを取り扱っているというものです。
そもそものテーブルの設計を間違えているようでしたらご指摘頂ければと思います。

shopテーブル
id |name
--+-----
1 |A店
2 |B店
3 |C店


itemテーブル
shopid |name
------+------
   1 |品A
   1 |品B
   2 |品C
   2 |品D
   3 |品E
793NAME IS NULL:2007/08/24(金) 01:15:49 ID:???
>>792
詳しくは外部キー制約でググってみそ。

CREATE TABLE itemテーブル (
shopid integer REFERENCES shopテーブル(id),
name text
);
shopテーブルのidはプライマリーキーになってるかユニーク制約が掛かっていること。

itemテーブルにもプライマリーキーがほしいところ。
UNIQUE(shopid,name)制約も掛けておいた方がいいかな。
794792:2007/08/24(金) 22:09:48 ID:???
>>793
コマンドまで教えていただきありがとうございます。
以下のコマンドで作成しました。
複数の列で一意にする制限もできるんですね。

CREATE TABLE shop (
id SERIAL PRIMARY KEY,
name varchar(40) NOT NULL
);

CREATE TABLE item (
id SERIAL PRIMARY KEY,
shopid integer REFERENCES shop(id),
name varchar(40) NOT NULL,
UNIQUE(shopid,name)
);
795NAME IS NULL:2007/08/28(火) 23:33:08 ID:Np2tXOAq
テーブルにチェック項目を設けたいときは一般的にはどういう風にやるのでしょうか?
intにして 0 or 1 を入れるようにすれば実現できるのですが、2などの例外が入ってしまう可能性があるので。
単純にon/offの型があればいいのですが。

shop
id |name  |chk
--+------+--
1 |A店   |0
2 |B店   |1
3 |C店   |0
796NAME IS NULL:2007/08/28(火) 23:36:32 ID:???
>>795
boolean not null で駄目なのか?
797795:2007/08/28(火) 23:45:00 ID:???
>>796
うわぁ、そんなものがあったんですね。
よく調べずすいません。。。
今は環境がなく試せませんが明日やってみます。
ありがとうございます。
798NAME IS NULL:2007/08/31(金) 13:53:19 ID:f4y0TXM4
PostgreSQLの名前をPostgresに変更しようという件について
799NAME IS NULL:2007/08/31(金) 14:48:11 ID:???
名前は重要だと思うよ。
変更に酸性。

名付けは細木数子に頼むのが良い。
800NAME IS NULL:2007/08/31(金) 16:58:08 ID:f4y0TXM4
名前を変えられたら、PostgreSQLを使った製品開発やドキュメント書いてる俺涙目。

名前を変えるよりロゴを萌え絵にしろよw
801NAME IS NULL:2007/08/31(金) 19:39:18 ID:QYPZ7Orq
>>800
クライアントに提案しづらくなる・・・
802NAME IS NULL:2007/08/31(金) 23:03:17 ID:???
じゃあ劇画調で
803NAME IS NULL:2007/09/01(土) 21:47:55 ID:???
vacuumdbって-Uオプションあるやん。
あれって何か違い出るの?
804NAME IS NULL:2007/09/02(日) 01:00:27 ID:???
-U username : 接続するユーザ名を指定します。
ふつうは管理者権限で接続するだろうから、あんまり差はない。
ユーザごとのGUC設定を使っていると意味があるかも。
vacuumdb 専用のユーザを作って、そのユーザだけ vacuum_cost_delay を設定しておくとか。
805NAME IS NULL:2007/09/02(日) 11:21:15 ID:a2+LEoyA
>>804
vacuum_cost_delayってユーザ単位に設定出来たっけ?
vacuumdbに拘らなければ
psql postgres -c "set vacumm_cost_delay=10; vacuum"
でも代用出来そうな。
806NAME IS NULL:2007/09/02(日) 16:12:11 ID:???
>> 805
ユーザ単位のパラメータ設定
 ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }]

あと、最近 vacuum と一緒に他のコマンドを実行できなくなったので、
その指定方法だとうまくいかない。まぁ、ファイルを読ませればいいんだけど。
 ERROR: VACUUM cannot be executed from a function or multi-command string
807NAME IS NULL:2007/09/03(月) 08:00:08 ID:EUzll27l
今回初めて質問します。
fedoracore4でpostgresql+phpのプログラムを動かそう
としているんですが、データベースがうまく入ってくれません。
エラーです。
また本見てやっているんですが、僕の場合euc-jpではなく
UTF-8で表示されていて、それをeucにテーブルを変換して
やろうと思っているんですが入力の際にデータベースの言語がeuc-jpが最初から書いてあって
俺のはUTF8なんだが、
それを無理やり変換してEUCで入力しようとすると、
invalid byte sequence for encoding "EUC_JP"
のエラーがでます。
どうしたいいでしょうか?
よろしくお願いします。
808NAME IS NULL:2007/09/03(月) 09:58:34 ID:???
日本語でおk
809NAME IS NULL:2007/09/03(月) 10:27:29 ID:???
>>807
ちゃんと変換出来てないって事
810NAME IS NULL:2007/09/03(月) 15:12:22 ID:aCl1fY0Z
>>806
8.2.4だとマルチステートメントでもVACUUMは動いたけど、「最近」って8.3のHEADのこと?
811NAME IS NULL:2007/09/03(月) 18:18:47 ID:???
>>807
set client encoding to 'EUC_JP'

つか、どっちがUTF-8でどっちがEUCなんだかわかりにくいぞ
812NAME IS NULL:2007/09/03(月) 18:20:12 ID:???
client encoding は client_encoding だった。かえといてね
813NAME IS NULL:2007/09/04(火) 00:20:16 ID:???
質問です
to_char(time,'YY/MM/W')で週毎の集計が出来たのですが、
yahoo!ファイナンスのチャート図(下記URL先)の様な折れ線グラフを作るためのデータを取得したいのですが…
http://quote.yahoo.co.jp/q?s=2121.t&d=c&k=c3&a=v&p=m25,m75,s&t=3m&l=off&z=m&q=c&h=on

また、十日毎といっても月を跨いだ時等はどうするかが検討つきません
どなたか御教授お願いします


1月1日〜1月10日,1月11日〜1月21日,1月21日〜1月31日の様に集計
814NAME IS NULL:2007/09/04(火) 00:49:03 ID:???
>>813
結局何が知りたいのかようワカラン。
とりあえず上旬(1〜10)、中旬(11〜20)、下旬(21〜月末)で集計(GROUP BY)したいと言うことなら
SELECT
to_char(time,'YYYY/MM/')||CASE WHEN EXTRACT(day FROM time) <11 THEN '上旬' WHEN EXTRACT(day FROM time) >20 THEN '下旬' ELSE '中旬' END,
count(*) -- <- 集計したい項目
FROM Table
GROUP BY to_char(time,'YYYY/MM/')||CASE WHEN EXTRACT(day FROM time) <11 THEN '上旬' WHEN EXTRACT(day FROM time) >20 THEN '下旬' ELSE '中旬' END

週間で月を跨いだ対処も、EXTRACT(doy FROM time)/7 で導き出せるんじゃね。
815813:2007/09/04(火) 01:00:49 ID:???
>>814
813です。
曖昧な質問に対して的確なレス、有難う御座いました。
意図した形で集計する事が出来ました。

参考書等を購入し勉強したのですが、813さんの様なクエリは思いつきませんでした。
本当に感謝しています。
有難う御座いました。
816NAME IS NULL:2007/09/05(水) 12:28:29 ID:q0Q7e1d0
あるテーブルで二つのカラムでUNIQUE制約をつけました。
ALTER TABLE table ADD CONSTRAINT table_multi_key UNIQUE (bar_id, foo_id);

で、この場合、WHERE foo_id = 100 と検索した場合このインデックスは使われるのでしょうか?
それとも別に
CREATE INDEX table_foo_id_key ON table (foo_id);
と、別にインデックスを作ったほうが高速なのでしょうか?


バージョンは8.1.5です。
ttp://www.postgresql.jp/document/pg815doc/html/indexes-multicolumn.html
ここ読んでみたんですけど、まどろっこしく書いてあって、イマイチよくわかりません。
お願いします。
817NAME IS NULL:2007/09/05(水) 14:00:18 ID:???
EXPLAIN で
818NAME IS NULL:2007/09/05(水) 15:18:38 ID:q0Q7e1d0
>>817
サンクス!
そうか、忘れてました。すいません。
ちなみにindex使ってました。
819NAME IS NULL:2007/09/05(水) 18:11:34 ID:GcRbieQa
以下のようなテーブルlistがある場合に、
nameの多い順にランキングを出力したい場合はどのようなSQL文になるのでしょうか。
重複数を数えるやり方でもわかればいいので宜しくお願いします。

list
name
----
foo
bar
bar
foo
foo
hoge
hoge
root

問い合わせ結果
no | name | num
---+------+-----
1 | foo | 3
2 | bar | 2
2 | hoge | 2
4 | root | 1
820NAME IS NULL:2007/09/05(水) 18:29:09 ID:???
重複数を数えるのはGROUP BY
SELECT name, count(name) FROM list GROUP BY name ORDER BY count DESC;

で、順位を出すにはサブクエリ使って結果のcount が少ないやつの数を数えるんだけど
tyっとオレにはすぐは書けないわ・・・
821NAME IS NULL:2007/09/05(水) 19:08:51 ID:q0Q7e1d0
7.4.5から8.1.9にDUMPでデータを移してSELECTかけてみたんですが
前は300msくらいで終わってたクエリーが40秒かかるんですけど
何か設定がいけないのでしょうか?

メモリは同じ容量(500MB)でCPUは新しいサーバーのほうが高速です。

クエリは2つのテーブル(30000レコード*1500レコードくらい)をJOINしたビューに対して検索をかけたものです。
ビューだからというわけじゃなく、JOINするとものすごく遅くなるみたいです。

shared_buffers
work_mem
temp_buffers
この辺の値を増やしてみたけど変化ありませんでした。

topコマンドでCPUとメモリの状態をのぞいてみると
postmaster CPU100% メモリ1.0%
くらいで40秒占領します。
メモリはぜんぜん使ってない感じです。

745のサーバーはルート権限を持っていないので、postgreのメモリ関係の設定がどうなっているかわかりません。
ちょっと情報が少ないですけど、何が原因心当たりのある方いらっしゃいますでしょうか?
お願いいたします。
822NAME IS NULL:2007/09/05(水) 19:12:52 ID:???
とりあえず、EXPLAIN で
823NAME IS NULL:2007/09/05(水) 19:20:28 ID:???
>>819
結構コストが嵩張りそう...

SELECT ( SELECT count(*)+1 FROM (SELECT name FROM list GROUP BY name HAVING count(*) > T1.num) AS T2)AS no,
name,num FROM (SELECT name, count(*) as num FROM list GROUP BY name) AS T1 ORDER BY no;
824NAME IS NULL:2007/09/05(水) 20:21:13 ID:q0Q7e1d0
t_bigとt_smallテーブルを
FROM t_big JOIN t_small ON t_big."delete" = 0 AND t_big.small_no = t_small.small_no AND t_small."delete" = 0 AND t_small.is_hidden = 0;
こんな感じでJOINしたのがv_bigです。
上が7.4.5の時のEXPLAIN ANALYZEで下が8.1.9のです。


EXPLAIN ANALYZE SELECT big_no FROM v_big WHERE age < 20;
QUERY PLAN
--------------------------------------------------------------------------------------------
Hash Join (cost=1411.98..3660.47 rows=2838 width=4) (actual time=30.671..101.677 rows=3415 loops=1)
Hash Cond: ("outer".small_no = "inner".small_no)
-> Seq Scan on t_big (cost=0.00..2198.48 rows=4326 width=8) (actual time=0.044..61.204 rows=4398 loops=1)
Filter: (("delete" = 0) AND (age < 20))
-> Hash (cost=1409.91..1409.91 rows=827 width=4) (actual time=30.353..30.353 rows=0 loops=1)
-> Seq Scan on t_small (cost=0.00..1409.91 rows=827 width=4) (actual time=0.072..29.192 rows=828 loops=1)
Filter: (("delete" = 0) AND (is_hidden = 0))
Total runtime: 103.799 ms



EXPLAIN ANALYZE SELECT big_no FROM v_big WHERE age < 20;
QUERY PLAN
-------------------------------------------------------------------------------------------
Nested Loop (cost=0.00..1595.61 rows=1 width=4) (actual time=0.393..20364.680 rows=3501 loops=1)
Join Filter: ("inner".small_no = "outer".small_no)
-> Seq Scan on t_small (cost=0.00..116.67 rows=1 width=4) (actual time=0.016..7.542 rows=856 loops=1)
Filter: (("delete" = 0) AND (is_hidden = 0))
-> Seq Scan on t_big (cost=0.00..1478.28 rows=53 width=8) (actual time=0.006..21.900 rows=4358 loops=856)
Filter: (("delete" = 0) AND (age < 20))
Total runtime: 20366.878 ms


どうやらNested Loopが問題だったみたいです。
set enable_nestloop = off;
したら早くなりました。

postgresql.conf設定で、enable_nestloop = off にしてるとか
ALTER DATABASE mydb SET enable_nestloop TO off;
とかするしかないんでしょうか?
OFFにしちゃって問題ないんでしょうか?(Nested Loopが役に立つときはないのでしょうか?)
プランナがうまく選んでくれるよう設定でどうにかならないのでしょうか?

なんか最後質問攻めになってしまいましたが、ご意見お願いします。
825NAME IS NULL:2007/09/05(水) 20:33:43 ID:???
8.1系は何かと難ありという話をここでも見聞きしているのでパスしてる。
んで、DB移した後ANALAYE Table してなかったってオチじゃないでしょうね >>824
826NAME IS NULL:2007/09/05(水) 20:53:54 ID:???
8.1でプランナが悪くなったという話は聞いたことがない。
[7.4] Hash Join
 -> Seq Scan on t_big (rows=4326) (rows=4398)
 -> Seq Scan on t_small (rows=827) (rows=828)
[8.1] Nested Loop
 -> Seq Scan on t_small (rows=1) (rows=856)
 -> Seq Scan on t_big (rows=53) (rows=4358)
どう見ても ANALYZE してなさそう。
827NAME IS NULL:2007/09/05(水) 22:00:30 ID:???
>>826
「プランナが悪くなった」とは聞いてないけど、
同様の事例は何度か見たことがある。
「PostgreSQL & pgsql-jp ML 3テーブル目」で見たんだっけかな?
EXPLAINを知ってて、ANALYZEを知らないなんてことは考え難いし
ANALYZEしても駄目だったという報告もあった。
828819:2007/09/05(水) 22:30:42 ID:???
>>820,823
どうもありがとうございます!
わからない箇所だらけですが解読してみます。
ほんとうにありがとうございました。
829NAME IS NULL:2007/09/06(木) 07:52:41 ID:???
>>827
「きちんと動いた」ケースは、報告されないことに注意。
世の中の大半のケースでは、問題なく移行できているかもしれない。
もちろん、できていないかもしれないけど。
830q0Q7e1d0:2007/09/06(木) 09:59:32 ID:ndlSTD04
マジでごめんなさい
今回のケースはANALYZEしてなかっただけです。

したらプランナHash Joinを選びました。

レスしてくださった人ありがとうございました。
831819:2007/09/07(金) 19:49:09 ID:???
>>823
解読しようとしているのですが、
SELECT count(*)+1 FROM (SELECT name FROM list GROUP BY name HAVING count(*) > T1.num) AS T2
この部分がよくわかりません。。。
たぶんランキングの順位の番号を出していると思うのですが、どういう処理をしているのでしょうか?
832823:2007/09/07(金) 21:48:12 ID:???
>>831
相関サブクエリ。GROUP BYしてるからややこしいのだけど、
単純に点数で順番をつけるときは、以下のようにする。

name | score
foo | 5
bar | 7
hoge | 6

SELECT (SELECT count(*)+1 FROM Table WHERE score > T1.score) AS no , name ,score FROM Table AS T1 ORDER BY no;

no | name | score
1 | bar | 7
2 | hoge | 6
3 | foo | 5

>>823はこれを少し工夫したやつ。
833NAME IS NULL:2007/09/09(日) 00:07:43 ID:7m3/qMSP
fedora core4で
postgresql8.1.9を使っています。
initdbをしたところ
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale ja_JP.UTF-8.
The default database encoding has accordingly been set to UTF8.

initdb: directory "home/postgres/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "home/postgres/data" or run initdb
with an argument other than "home/postgres/data".

のようなエラーがでたんですが、意味がわかりません。
どういう対処したらいいのでしょうか?
教えてください。お願いします。
834NAME IS NULL:2007/09/09(日) 00:51:26 ID:???
英語嫁。initdb 先のディレクトリが空でないと書いてある。
すでに initdb 済みなら、そのまま使えばいい。
再初期化したいなら、rm -r $PGDATA して全部消せばいい。
835NAME IS NULL:2007/09/09(日) 01:17:56 ID:???
FCにyumとかrpmで入れたらinitdb済みじゃなかったっけ
836NAME IS NULL:2007/09/09(日) 02:26:59 ID:7m3/qMSP
phpと連携したいのですが、fedora core4でyumでやったところ、
うまくできなかったので、最初からインストールから
やっています。
なんでできなかったのかわからないのですが、
後もうひとつ質問なんですが、
initdb --pgdata=/home/postgres/data
cd/home/postgres/data
した場合ls -lで
いろんなファイルがでてくるはずなんですが、
すくなくともpostgresql.confなど
自分のPCにはでてこないのですが、どうしてでしょうか?
パスは
export PATH=$PATH:/usr/local/pgsql/bin

export MANPATH=$MANPATH:/usr/local/pgsql/man/

export POSTGRES_HOME=/usr/local/pgsql/

export PGLIB=$POSTGRES_HOME/lib

export PGDATA=/home/postgres/data
です



837NAME IS NULL:2007/09/09(日) 06:26:26 ID:7m3/qMSP
834さん835さんありがとう
836わかる方お願いします。
838NAME IS NULL:2007/09/09(日) 12:04:46 ID:???
質問の文章が曖昧で何とも

1>
質問するなら自分の中の独り言を混ぜるな

2>
多分initdb出来てねえからじゃねえかと思うが
あとそういう時は ls -l よりも ls -al
839NAME IS NULL:2007/09/09(日) 21:50:18 ID:7m3/qMSP
どうしても本みてもできません。
みなさんはどのようにしてやりましたか?
自分はfedoracore4で
php+postgresqlで作る実用システムと
php+postgresqlで作るwebシステムとサイト
を見てやっているんですが、まだ、postmasterの起動
もままならないです。
どういう本やサイトを見ればphp+postgresqlの
構築ができるでしょうか?
こういうサイトがあるよとかこういう本があるよ
とか教えていただければ幸いです。
840NAME IS NULL:2007/09/09(日) 22:46:17 ID:???
>>839
PostgreSQLを動かすくらいだったらググるだけで出来たよ。
841NAME IS NULL:2007/09/10(月) 00:26:18 ID:i9bzVQHH
自宅サーバーでphpとpostgresqlを動かしたいのですが、
なんか書籍がすくなくてfedora core4でやった人
いませんか?
842NAME IS NULL:2007/09/10(月) 00:28:40 ID:???
動かすだけならREADME読むだけで十分というか、あれ以上にすることないしなあ
843NAME IS NULL:2007/09/10(月) 00:57:48 ID:i9bzVQHH
php+postgresqlを連動して動かしたいんですが、
webアプリを自宅サーバーで動かしたいんです。
yumでpostgresqlをいれてやってもできなくて、
ダウンロードしてやるようにしています。
844NAME IS NULL:2007/09/10(月) 01:27:31 ID:???
>>843
しつこい。
明確な回答が得られないのは、質問の仕方が悪いからだと理解しなさい。
845NAME IS NULL:2007/09/10(月) 02:49:24 ID:???
>>843
お前のように頭が悪いやつには無理
846NAME IS NULL:2007/09/10(月) 04:58:55 ID:i9bzVQHH
はい、わかりました

847NAME IS NULL:2007/09/10(月) 06:28:17 ID:???
>>846
yumでダメならソースからコンパイル汁。
848NAME IS NULL:2007/09/11(火) 09:32:20 ID:???
カスタムアーカイブでバックアップする場合、文字コードって気を付けないとダメ?
pg_dumpのあとにnkf使って変換することに意味あるのかな、と気になりまして。

どなたかご存知でしたら、教えて頂けませんでしょか?
849NAME IS NULL:2007/09/11(火) 09:53:29 ID:???
クライアントのエンコーディングを指定してやるのがいいと思うよ
まあ直接書き換える最終手段は、時には有効だが
850848:2007/09/11(火) 10:20:20 ID:???
>>849
ありがとうございます。m(_"_)m
851NAME IS NULL:2007/09/17(月) 07:28:06 ID:BM21nJlH
PostgreSQL 8.2.5, 8.1.10, 8.0.14, 7.4.18
852NAME IS NULL:2007/10/02(火) 03:20:18 ID:???
853NAME IS NULL:2007/10/03(水) 01:02:40 ID:cKWyHEcN
8.3何ヶ月遅れてんだよ
854NAME IS NULL:2007/10/03(水) 02:56:50 ID:???
今出ましたー
855NAME IS NULL:2007/10/04(木) 00:53:09 ID:???
下らない質問かもしれませんが、教えて頂けると助かります。

FreeBSD6.2でPostgreSQL7.4.17使ってるんですが、
PostgreSQLの管理用アカウントと同じ名前のDBって必要ですか?

initdbを実行すると、template0とtemplate1と出来ますけど、
postgresっていうDBは必須なのかな…と疑問に思いまして。

DB関連の情報(メタデータ?)はtemplate1に入るから、必須じゃないのかな?
ご存知の方いらっしゃいます?
856NAME IS NULL:2007/10/04(木) 03:10:53 ID:???
>>855
必要ない
857NAME IS NULL:2007/10/04(木) 07:40:23 ID:???
>>855
createdb とかがデフォルトで接続するデータベースなので、
drop するとそれらのユーティリティコマンドがエラーが出る場合がある。
まぁ、代わりに template1 につないで CREATE DATABASE すれば良いので、必須ではないけど。
858NAME IS NULL:2007/10/04(木) 08:36:20 ID:???
>>856-857
ありがとうございます。
任意だったのか…。
template1を参照するようにします。
859NAME IS NULL:2007/10/06(土) 18:15:06 ID:3Tvo6iqU
8.3β1
860NAME IS NULL:2007/10/08(月) 10:16:07 ID:HIdUZyeW
>>859
本家のアナウンスはまだだけど、山大のサイトからは取れるんだな
ttp://ftp.yz.yamagata-u.ac.jp/pub/dbms/postgresql/source/v8.3beta1/
861NAME IS NULL:2007/10/08(月) 21:44:19 ID:HIdUZyeW
帰宅して確認してみたら本家のサイトからもDLできるようになってた>8.3beta1
ttp://www.postgresql.org/ftp/source/v8.3beta1/
862NAME IS NULL:2007/10/10(水) 05:12:31 ID:L6dZ+qSx
大幅なパフォーマンス向上を実現、PostgreSQL 8.3 Beta 1登場
http://journal.mycom.co.jp/news/2007/10/09/025/index.html
863NAME IS NULL:2007/10/16(火) 00:08:35 ID:???
PowerGres使ってる人いる?
使いやすい?
864NAME IS NULL:2007/10/24(水) 16:34:52 ID:BHsGSzOM
>>821

バージョンアップにより、全般的にかなり早くなったようですが、
特定のSQLでは、極端に遅くなってしまう場合もあるようです。
その場合は、SQLを工夫して、変更すれば対処できるかもしれません。

下記の場合の例があるので、ご参考に。
>>747

あとは、8.3 の登場を待つしかないかな。
865NAME IS NULL:2007/10/29(月) 12:42:43 ID:K87H+Eo2
8.3-beta2
866NAME IS NULL:2007/10/29(月) 22:40:51 ID:???
Web File Browser のパスがカオスなんだが > 8.3beta2
867NAME IS NULL:2007/10/31(水) 21:15:13 ID:PtM07kiJ
http://www.postgresql.org/ftp/source/v8.3beta/

beta1の時にはパスに1って入ってたのに、beta2からは数字なし。しかも本家のページからは辿れないw
868NAME IS NULL:2007/11/01(木) 10:27:34 ID:???
最近Sunがやけにプッシュしてるなぁ。
869NAME IS NULL:2007/11/01(木) 18:03:47 ID:dyRDA18A
Windowsに入れたら、Windowsにもpostgresっていうアカウントができてしまったんだけど
Windowsの方のpostgresっていうアカウントは削除しておk?
870NAME IS NULL:2007/11/01(木) 18:38:20 ID:???
クライアントとして使うなら不要。
サーバとして使うなら必要。
871869:2007/11/01(木) 19:33:50 ID:???
>>thx どっちとして使うかよくわからん。。。PHPのやつやるんだ。
一応、残しとくよ。レスありがとう。
872NAME IS NULL:2007/11/01(木) 20:31:07 ID:???
いや、それくらいは理解しとけってw
873NAME IS NULL:2007/11/02(金) 11:41:48 ID:A+w3KhOw
>>871
皆通って来た道だがんがれ。
多分100回はOSごとインストールし直すとおもぶ
874NAME IS NULL:2007/11/02(金) 12:43:30 ID:???
俺なんか1000回もした。
875NAME IS NULL:2007/11/02(金) 13:45:02 ID:pzafmDcd
Debian Linux, Apache 2.2.3, PostgreSQL 8.1.9 です。

cgi から Postgres にアクセスできません。以下のエラーが発生します。

ERROR: permission denied for relation sessions
ERROR: current transaction is aborted, commands ignored until end of transaction block

Apache は www-data というユーザー名なのですが、linux のシェルからは www-data ユーザーでアクセスできます。

debian:~# su - www-data
www-data@debian:~$ psql somedb

somedb=> insert into sessions (id) values ('12345');
INSERT 0 1

somedb=> \z sessions
Access privileges for database "somedb"
Schema | Name | Type | Access privileges
--------+----------+-------+------------------------------------------------------------------
public | sessions | table | {"someuser=arwdRxt/someuser","=arwdRxt/someuser"}
(1 row)

linux シェルから www-data ユーザーで cgi(perlスクリプト)を実行しても同様のエラーになりました。
someuser ならば cgi を実行できます。

これはどこに問題があるのでしょうか?(Postgres or cgi?)

アドバイスお願いします。
876NAME IS NULL:2007/11/02(金) 22:56:27 ID:???
CGI実行するユーザーとCGIでアクセスするときのユーザーは無関係よ
DBIのconnectの例文を読めば分かる
877NAME IS NULL:2007/11/02(金) 23:11:35 ID:???
Windows版って業務に躊躇なく使えるレベル?
Windowsでやったことないもんで。
878867:2007/11/02(金) 23:29:48 ID:???
さっき見てみたら本家のリンクも修正されてた。
今後は最新のbetaには番号を付与しないパス名にするんだろうな。
879NAME IS NULL:2007/11/03(土) 00:18:16 ID:Ng9uGUy5
>>868
けど、Solaris上でPostgreSQL使ってる奴なんて見たことないな
880NAME IS NULL:2007/11/03(土) 01:09:23 ID:Lnnx883U
>>877
ウウチは普通に使ってる
7.4と8.2で
ミッションクリティカルな観測系のシステムに使ってみてる トランザクション数はぼちぼちあるほうだと思うけど
ただ、試すならマイナーバージョンが古いのはオートバキュームがバグもちなんで対策済みのものを使うことをお勧め

VS派なんでSQL鯖2005のが好みだけどPostgresのパフォーマンスも悪くないと思うよ 特に8.xになってSELECTマシになった気がする
のは気のせいかもしれんが
881NAME IS NULL:2007/11/04(日) 22:01:58 ID:47ZLt+ou
7.4ってwindowsネイティブ?
882NAME IS NULL:2007/11/05(月) 14:50:33 ID:???
>>882
んにゃ、7.4はcygwin上でないと使えないべ
windows native対応は8.0から
883875:2007/11/05(月) 15:07:24 ID:???
CGI の設定ファイルの dbname をテスト用db名にしたままだった…
スレよごしすみませんでした。

>876 レスありがとうございました。
884NAME IS NULL:2007/11/06(火) 18:16:34 ID:???
>>879
うちも普通にSolarisにPostgreSQLだ。
プリインストールのPostgreSQLが邪魔だw
885NAME IS NULL:2007/11/08(木) 01:03:47 ID:s9agLjsJ
>>884
使った事無いけどkwsk
Linuxとかに標準搭載のPostgresみたいなものなのかな?

てかみんな実務でバージョンいくつ使ってる?
ウチは今のところ7.4なんだが 
886NAME IS NULL:2007/11/08(木) 09:40:16 ID:???
ほえ Linuxなら 8.1 8.2 使ったほうがいいよ。
バキュムも改善されてるし、なにより速い。
正直オーコーと変わんないよ。

てかここウィンのposdgreでしょ。
887NAME IS NULL:2007/11/09(金) 00:40:41 ID:???
>>886
【Windows】【対応】はPostgreSQL 8.0以後は「Windows対応」したことを
表しているだけ。
もう十分周知されていると思うので、次スレでは「Windows対応」の文字は
消した方がよいと思う。
888NAME IS NULL:2007/11/09(金) 09:36:49 ID:???
>>887
最初にスレタイ見たとき、Windows専用かと思った
889NAME IS NULL:2007/11/09(金) 10:21:20 ID:???
俺もそう思ったが、MLのスレが無くなったらもうここしかないからな
890NAME IS NULL:2007/11/09(金) 12:48:02 ID:???
絶対スレタイが癌になってる。
891NAME IS NULL:2007/11/09(金) 19:35:31 ID:???
今来た私めもそう思いました。

UNIQUE 制約の付いたカラムがに重複するレコードを INSERT 使用としたときに出る
エラーって「 23000 整合性制約違反 integrity_constraint_violation」 でええのか?
892NAME IS NULL:2007/11/10(土) 20:21:08 ID:???
23505 duplicate key value violates unique constraint "..."
だと思うが。
893NAME IS NULL:2007/11/11(日) 10:36:38 ID:04zEFGg4
>>885

うちは 8.1 使ってます。8.2がサブクエリで遅くなるケースがあるって
どっかで読んだので8.2は止めてます。pgpoolで2重化もしてますが、今んとこ
とくにトラブルないです。sqlの書き方で、indexをうまく使ってくれない
ケースが2回くらいあったけど、その他は不満なし

894NAME IS NULL:2007/11/12(月) 01:42:18 ID:???
すいません。教えて下さい。
環境:WindowsXP-PostgreSQL8.2.0
症状:
いつの日かpgAdminIIIを起動して使用してるDBを開こうとすると
正常に見えることもあるが、 エラー(コネクティングエラー)を吐いたり、
保存してあるはずのパスワードを聞かれたりして(ちゃんと入力してもエラーとなる)
動作が不安定となる。しばらくは騙し騙し使っていたが、全く開かなくなったので、
再インスコしようと思いDBをバックアップをしようと思ったですが、
pg_dumpも同じエラーで起動できずに困ってます。
DB領域を消さずに再インスコしてアタッチできるでしょうか?
また最初のインスコ時にDB領域を変えていないのでデフォだと思うのですが、
その場所ってどこだか教えて下さい。
895NAME IS NULL:2007/11/12(月) 03:02:47 ID:???
>>894
データ壊れてなけりゃ同じバージョン、同じOSならそのまま使える。
場所は、postgresql.confのあるところだよ。
メニューにeditの項目あるべ。
Program Files\PostgreSQL\8.2\data だと思う。
不安定なのに同じエラーとはどういうこと?
896894:2007/11/12(月) 06:59:46 ID:???
>>895
レスありがとうございます。
恐らく不安定で動かない時はサービスが停止しちゃっている様子みたいです。
一度再インスコしてみます。
ただ不安要素としてThinkPad X60を使用しているのですが、
これって最初からパスワードを別に覚えさせるThinkVantage Client Security Solution
というソフトが入っていることですかね。。。
これが何やら悪さしてる気がしなくもないです。
897JPUG中の人:2007/11/12(月) 16:53:14 ID:uz0r3I2D
11/22 PostgreSQL事例セミナーやります。

http://www.postgresql.jp/
898NAME IS NULL:2007/11/12(月) 17:22:27 ID:???
ニートがいいっぱーい ニコニコ動画。

という事で無職の人間が行ってもいんですかねー。
やぱ会社員じゃなきゃだめなんですか。
899NAME IS NULL:2007/11/12(月) 20:02:49 ID:???
ポストグレス使ってる人はほとんど無職だよ
900NAME IS NULL:2007/11/12(月) 20:09:38 ID:BUYdaGs/
Look for 8.3 beta 3 late this week.
901NAME IS NULL:2007/11/13(火) 02:04:12 ID:???
>>899
そ そうなんですかー なんかこわいな。
でもエントリはOKなんですね。よかった。
バックアプとフェイルオバ どうやってるのか聞いてこようっと。
実際やってないとこ多いからねw U know.
902NAME IS NULL:2007/11/13(火) 17:05:30 ID:???
>ポストグレス使ってる人はほとんど無職だよ
すごい言い切りだ
903NAME IS NULL:2007/11/14(水) 01:54:13 ID:CafCLU7e
PostgreSQLの高速化と高信頼化を実現する「pgpool-II」を使ってみる
http://journal.mycom.co.jp/articles/2007/11/08/pgpool/index.html

8.3の登場に合わせて、pgpool-IIIが出るんだっけ?
pgpool-IIはまだパフォーマンス問題があるらしいから、
早く解決してくれないかなー。
904NAME IS NULL:2007/11/14(水) 02:11:52 ID:???
>>903
pgpool-II ver2でそ
905HNRyEnsjgBP:2007/11/14(水) 04:05:16 ID:???
906CBixsqWakAPEvKEcCM:2007/11/14(水) 04:18:09 ID:???
907NAME IS NULL:2007/11/14(水) 09:15:38 ID:???
>>904
ややこしいネーミングw
2.2とかにしとけよ
908NAME IS NULL:2007/11/14(水) 09:24:53 ID:???
プゲプール
909NAME IS NULL:2007/11/14(水) 20:58:59 ID:???
すみませんが、お知恵を拝借させて下さい。

PostgreSQLでSQL Serverで言うところのリンクサーバみないな
機能ってありますが?

社内で稼動中のOracleのテーブルをPostgreSQLから参照して
サービスを提供するような物を考えているのですが方法が分かり
ません。
Oracle側は別部門の管理で参照する権限しかないので、テーブル
の参照内容をPostgreSQLへ取り込みたいのです。

なにか良い方法は無いでしょうか?
910NAME IS NULL:2007/11/14(水) 21:34:52 ID:Ukk+YMyt
>>909
参照だけならSELECT権限だけで充分じゃないの?
なにがしたいのかわからん。
InstantClientとかOO4Oで繋げたら?
911NAME IS NULL:2007/11/14(水) 21:39:16 ID:???
リンクサバ?
912NAME IS NULL:2007/11/14(水) 21:46:56 ID:???
>>909
PostgreSQLに接続して、Oracleのテーブルを参照しようってこと?
913NAME IS NULL:2007/11/14(水) 21:57:19 ID:???
>>909
DBI-Link (http://pgfoundry.org/projects/dbi-link/) かな。
使ったこと無いけど。
914NAME IS NULL:2007/11/14(水) 21:58:19 ID:???
>910
ご意見ありがとう御座います。
色々な方法を模索しているのですが、InstantClientとOO4Oに
ついても調べてみます。

>>912
そんな感じです。
ある時点でのOracleのテーブル内容をPostgreSQLに蓄積したいのです。
一定間隔(1時間毎とか)でOracleのテーブル内容をPostgreSQLのテーブル
に保存して履歴の調査などに使えないか考えているのです。
915NAME IS NULL:2007/11/14(水) 22:13:49 ID:???
見れればいいのねw
あうDBの参照結果を別のDBに格納する事
実に当たり前の事と思う。
916NAME IS NULL:2007/11/15(木) 00:43:46 ID:???
>909

一定間隔でいいのなら、
sqlplusでOracleからテキスト書き出し → copyでPostgreSQLにテキスト取り込み
なんてスクリプトをcronで回せばいいんぢゃね?
917NAME IS NULL:2007/11/15(木) 02:16:23 ID:???
>>916
まぁなんでもできるねw
918TujNscDrzxsldtbRFZb:2007/11/15(木) 17:32:19 ID:???
Hi! Nice site!
919pkjISmVIPWDmaruCCJ:2007/11/15(木) 17:35:02 ID:???
Hi! Nice site!
920ARrTwEKZZKTvt:2007/11/15(木) 17:45:43 ID:???
Hi! Nice site!
921NAME IS NULL:2007/11/16(金) 11:07:14 ID:???
Win 版 8.1 の頃にエンコーディングに UTF-8 使って日本語の LIKE 検索で引っかからねーだったか
何だったか (うるおぼえ) ここで質問させてもらったんですけど、8.2 での UTF-8 使用って問題ない
ですかね?
922NAME IS NULL:2007/11/16(金) 12:15:04 ID:???
それエンコーディングの問題なの?
923NAME IS NULL:2007/11/16(金) 12:43:34 ID:???
>>921
まさかとは思うが、 Like '*あ*' とかやってね? Like '%あ%' でやってる?
924NAME IS NULL:2007/11/16(金) 12:43:47 ID:???
素インストールからオプション等無指定で簡単なサンプル作って何度か試した結果。
うろ覚えだけどこんな挙動だったような。

CREATE DATABASE HOGE WITH ENCODING ???;
CREATE TABLE A(X VARCHAR(20)) WITHOUT OIDS;
INSERT INTO A(X) VALUES('あいうえお');

SELECT * FROM A WHERE X LIKE 'あい%';
UTF-8 / 8.1 / Win → 0 件       ← ???
EUC-JP / 8.1 / Win → 1 件
UTF-8 / 8.1 / Linux → 1 件
UTF-8 / 7.? / Linux → 1 件

その時にここで質問して Win 版で UTF-8 は問題あるからやめとけと言われ、
特に UTF-8 にこだわる必要もなかったので EUC-JP にしたんだけど、その後
バージョンアップでどうなったのかなーと思って。
925NAME IS NULL:2007/11/16(金) 14:32:17 ID:???
8.1でも8.2でもそんな結果にならないけど。
initdb で locale の設定してたとか?
926NAME IS NULL:2007/11/16(金) 14:33:56 ID:???
ってWin判の時のクライアントの環境によるのかな?
927NAME IS NULL:2007/11/16(金) 18:44:56 ID:p3r+CAEx
>>924

今、その提示したSQLで試したけど、
8.24では問題ない。

使用環境がわからないけど、
pgAdminVでもそういう結果になるのかな?
ODBCとかJDBCとか使ってる?
バキュームすると問題解消するとかじゃないかね?
928NAME IS NULL:2007/11/16(金) 19:47:09 ID:p3r+CAEx
>>909,914

自分の知っている言語で作成すれば簡単で何でも可能でしょう。

しかし、そもそも参照権限しかないのに、
テーブル内容をコピーして保存して利用するという点に問題があるような気もしますが。。。
(^^;
履歴調査などのためなら、
システム管理者が、普通にOracleで構築すればよいのでは?
別サーバーで低コストで管理ということなんでしょうが。。。
929NAME IS NULL:2007/11/16(金) 21:13:56 ID:???
>>928

ご意見ありがとうございます。

定期的にOracleから取得するように、適当な言語で作成する
事にします。

参照するOracleは工場の生産制御のサブシステムのレプリ
マシンに相当するのですが、色々と決まりがありまして、
更新は上位のシステム以外は認めない事になっているのです。

まー、Oracleが中心になっている生産制御Sで実現すれば良いの
ですが、要するにお金が無いのです。
930NAME IS NULL:2007/11/16(金) 22:29:12 ID:p3r+CAEx
>>929

社内規約やコスト面、大変ですね
Win版でXpや2000などでも十分、運用できると思いますよ。
931NAME IS NULL:2007/11/16(金) 22:41:38 ID:p3r+CAEx
24時間何ヶ月も連続運用するなら、
ServerOS は必要になるので、Linux がいいですね
WinXpだと1、2週間に1度は再起動した方がいいかもしれません。(かな?!)
932NAME IS NULL:2007/11/16(金) 22:57:20 ID:???
バキュムは忘れずにね。
933NAME IS NULL:2007/11/17(土) 10:11:48 ID:I/wB30qE
最新版にしとけよ
止めないバキュームのバグあっから
934NAME IS NULL:2007/11/17(土) 11:13:33 ID:???
日本語でおk。Windows版の8.1以前はバグがあるのは事実だけど。
935clLrWjkUphKMrUglz:2007/11/17(土) 22:30:58 ID:???
Hi! Nice site! <a href=http://dthqlr.cn/beer/ >hi </a> [URL=http://dthqlr.cn/beer/ ] guys [/URL] http://dthqlr.cn/beer/
936WxCoZzThB:2007/11/17(土) 22:38:06 ID:???
Hi! Nice site! <a href=http://dthqlr.cn/beer/ >hi </a> [URL=http://dthqlr.cn/beer/ ] guys [/URL] http://dthqlr.cn/beer/
937NAME IS NULL:2007/11/19(月) 23:28:06 ID:D/q9dvA5
beta3まだ〜?
938NAME IS NULL:2007/11/20(火) 12:54:19 ID:rhmS86RL
8.3RCは11末、8.3.0は12月第2週かなぁ
939NAME IS NULL:2007/11/20(火) 13:58:04 ID:???
リリース早すぎねーか。
半年に一回くらいでいーと思うが。
940NAME IS NULL:2007/11/20(火) 14:11:24 ID:???
うーん、、、8.2を本番に乗っける前に8.3来ちゃったからなあw
941NAME IS NULL:2007/11/20(火) 20:40:55 ID:wWhiZNbu
パソコンショップならここ!!
http://want-pc.com
942GLavAEgusjYUzyjbY:2007/11/20(火) 21:31:51 ID:???
943dpNCMaOXZUNHWSqplQr:2007/11/20(火) 21:43:13 ID:???
944VpHdUsgipGrBjFuXB:2007/11/20(火) 21:57:18 ID:???
945NAME IS NULL:2007/11/21(水) 09:53:25 ID:RdYUib7r
PostgreSQL8.3-beta3
946NAME IS NULL:2007/11/21(水) 10:20:35 ID:???

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

    【 あなたのタイピングどのくらい!? 】              2007/11/21 配信

 制限時間内に表示される画像内の、数字やアルファベットを次々とタイプ入力していく。
あなたのタイプ成功率が刻々と表示されていく。また、その時々のランキングにも表示さ
れていく。都道府県別のランキングもあれば、それぞれ友達と好きなチームを作り競い
合うチーム別ランキングもあって楽しめれる!

 また、タイプが成功したものはそのまま、「 国別対抗オンラインクリックゲーム 」の日本
チームのクリック数に貢献される。数々の激戦を戦い抜いてきた日本チームも、現在は
強敵ハンガリーチームに続いて第2位となっている。タイプの練習がそのまま日本チー
ムの優勝に貢献するかも!?あなたもぜひやってみては?

参加するには各種のツールを使う方法もあるが、まずはアクセスするだけでサイトから
簡単にできる「 小町 」をお試しください。なれてきたら各種ツールを試すのも楽しい。

タイプ入力サイトその1「 小町 」
  http://f106.dyndns.org/komachi/cgi/acsupporter/supporter.cgi?m=ff

「 国別対抗オンラインクリックゲーム 」については、日本チームのオフィシャルサイトで。
  http://clickjapan.jp/

  ※上記サイトはすべて「 国別対抗オンラインクリックゲーム 」日本チームの有志の
    方達の運営で、すべて無料です。

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
947NAME IS NULL:2007/11/21(水) 21:55:29 ID:wDK2HCC/
8.3 楽しみではあるんだけど、HOTが革新的なだけに不安。。。
だれかベータ版使った人います?
948NAME IS NULL:2007/11/21(水) 22:15:14 ID:uCKeYZ7l
>> 947
使ってるけど、HOTはすごすぎ。
VACUUMいらねってぐらいゴミがでない。
949NAME IS NULL:2007/11/21(水) 23:27:50 ID:???
950NAME IS NULL:2007/11/21(水) 23:29:54 ID:???
石井さんの21ページの長編記事。ITProのものとかぶってるところもあるけど
ttp://journal.mycom.co.jp/special/2007/postgresql/index.html

HOTや分散チェックポイントもいいが地味に並列CREATE INDEXが入っているのはいいね。
どうせならALTER TABLE 〜 ADD COLUMN 〜も並列にできるようにしてほしい
951NAME IS NULL:2007/11/21(水) 23:44:33 ID:???
>>948

凄そうですね〜。僕も試してみます。
952NAME IS NULL:2007/11/22(木) 01:02:20 ID:???
調べてるかぎりではそうだと思うんだけど
Vistaでは稼動しないよね?
953NAME IS NULL:2007/11/22(木) 04:36:28 ID:Vex/ynnt
pgpool-II 2.0ってWinにも対応してるのでしょうか?

いずれ、レプリケーションを使用したいので、
Win版からLinux版に移行しないといけないかもしれませんが、
移行するのは比較的簡単ですかねぇ?
Linux版ってコンパイルしてからの導入になるんですかねぇ?
954952:2007/11/22(木) 04:43:55 ID:???
ぐぐったらインスト方法が書いてあるサイト見つけました(;´Д`)
おさわがせしますた・・・
955NAME IS NULL:2007/11/22(木) 10:05:49 ID:???
>>952
できるよ。ユーザー作成にちょっとコツがいる
956NAME IS NULL:2007/11/22(木) 10:06:36 ID:???
って>>954で続きあったのか
957NAME IS NULL:2007/11/22(木) 10:38:55 ID:???
winでポスグレ使おうとは思わんな。
958NAME IS NULL:2007/11/22(木) 14:32:36 ID:???
そうか
オレはあらゆるやつに入れてる。
WinはpgAdminIIIのついでに入れたが、これだけでクライアントもサーバも
一通り動いてるので、テストにちょうどいいや。
959NAME IS NULL:2007/11/22(木) 15:24:39 ID:lCln3Y5O
psql で現在接続しているユーザ名を表示するにはどうしたらいいですか?
Oracle の sqlplus で言う "show user" を psql でやりたいのです。
960NAME IS NULL:2007/11/22(木) 15:40:37 ID:???
すみません。初歩的な質問で申し訳ないのですが教えてください。

create table pref_mst(
pref_id int primary key,
pref_name text not null
);
create table city_mst(
city_id int primary key,
city_name text not null,
pref_id int not null references pref_mst(pref_id)
);
create table zip_mst(
zip char(7) not null,
local_name text not null,
city_id int not null references city_mst(city_id),
primary key (zip,local_name)
);
という親子関係のある3テーブルがあり結合してSELCTしたいのですが

select * from zip_mst join city_mst using(city_id) join pref_mst using(pref_id) where zip = ?
の様に子に親のテーブルを結合する場合と

select * from pref_mst join city_mst using(pref_id) join zip_mst using(city_id) where zip = ?
の様に親に子のテーブルを結合する場合ではどちらが効率がいいのでしょうか?
またどちらも変わらない場合、どちらで書くのがオススメでしょうか?
961NAME IS NULL:2007/11/22(木) 16:44:59 ID:???
>>959
SELECT current_user;

>>960
一緒。
何らかの拍子にJOINしてからWHERE句で抽出するようなプランを実行してしまわないようにと
気に掛けるのなら、
SELECT * FROM (SELECT * FROM zip_mst WHERE zip = ?) AS T1 JOIN city_mst USING(city_id) JOIN preg_mst USING(pref_id);
のような書き方をするときはある。
962NAME IS NULL:2007/11/22(木) 22:17:37 ID:???
>>961さん
なるほど違いはないんですね。
有難うございました。

もうひとつ質問なのですが

create table zip_mst(
zip3 char(3) not null check( zip3 ~ '^[0-9]{3}$'),
zip4 char(4) not null check( zip4 ~ '^[0-9]{4}$'),
local_name text not null,
primary key (zip3,zip4,local_name)
);
というテーブルがあり

select * from zip_mst where zip3 || zip4 = '1600023';
という問い合わせをする場合にindexを貼る方法はありますか?

create index i_zip_mst_1 on zip_mst (zip3||zip4);は無理でした。

もちろんwhere区をzip3 = '160' and zip4 = '0023';とすすれば
primary keyが効くので問題ないのですが・・・

963961:2007/11/22(木) 22:24:30 ID:???
>>962
おしいな。
CRATE INDEX i_zip_mst1 on zip_mst ((zip3||zip4));
964NAME IS NULL:2007/11/22(木) 23:35:36 ID:J03+/NIo
>>953

pgpool-IIはバグが多めな印象なんで、pgpoolから試してみると良いかと。
965age:2007/11/23(金) 00:18:34 ID:lvB9rw0J
>>963
おしいな。
CREATE
966aGTAGHQB:2007/11/23(金) 00:23:29 ID:???
http://haimba.cn windows mp3 downloads
967NAME IS NULL:2007/11/23(金) 00:31:55 ID:???
>>965
いい目をしている
968wLLPbYNe:2007/11/23(金) 10:58:16 ID:???
http://iqlveq.cn cheap mp3 downloads
969MAUloamuKgCLiC:2007/11/23(金) 23:01:25 ID:???
970PbJCPrRtekn:2007/11/24(土) 08:13:24 ID:???
971MtkzSDkEMX:2007/11/24(土) 13:28:44 ID:???
972mPSHYFGioWFsjAR:2007/11/24(土) 14:54:24 ID:???
973fZlEPGntDOMIs:2007/11/25(日) 06:05:56 ID:???
http://bfsnbw.cn/mp38 white tail deer rutting season
974NAME IS NULL:2007/11/27(火) 03:23:15 ID:Vq1CXYEu
PostgreSQLのデータベースの内部構造(SQLの具体的な実現方法)を
解説している書籍はありませんか?
975NAME IS NULL:2007/11/27(火) 07:30:30 ID:???
976NAME IS NULL:2007/11/27(火) 08:03:07 ID:???
>>974
ソース嫁。
977vEZAPJyTYsiKSISugn:2007/11/27(火) 18:49:26 ID:???
978tyHKhToidvnsZwNh:2007/11/27(火) 18:50:00 ID:???
979NAME IS NULL:2007/11/28(水) 15:02:00 ID:4JPP6L4V
postgre初心者です。
メモリ関連についてお教えください。

postgre使って件数のやたら大きなDBいじってます(8.2.5でWindowsXP)。
2億3千万件のテーブルからselectで全件抽出し結果をファイルに吐き出し
たいのですが、まずは結果を出力させようとしています。
が、「out of memory query result」でエラーになってしまいます。
テーブルの元データがtextでも1G超えでおそらく結果も1G超えています。
sharedも1Gだけですが、これが原因でしょうか?(sharedだとしたら、1G
以上にすると正常起動しないのでこの回避策をお教え頂ければと・・)。

どなたか原因と改善策または回避策のご教示をお願い致しますm(_ _)m

980NAME IS NULL:2007/11/28(水) 15:26:14 ID:???
>>979
limit offset使いながら細かくデータ取得&書き出しすればOK。
981NAME IS NULL:2007/11/28(水) 16:39:25 ID:4JPP6L4V
>>980

回答ありがとうございます。さっそく試してみます。

ちなみにメモリのほうですが、8.2.5で1G以上のsharedが設定できないのは仕様
でしょうか?
または、Linuxの場合shmmaxで1プロセスで使用できるメモリのMAXが制限されて
いたので、同様な制限がWindowsのどこかであるのでしょうか?
Windows(32bit版)だとアプリは2Gまで使えると聞いたことはあるのですが・・。

必死に調べたのですが見当たらず、重ね重ねすみませんが後学のためこのあたり
ご存知の方がいたらご教授お願い致します。
982NAME IS NULL:2007/11/28(水) 22:00:27 ID:???
>>979
COPY か CURSOR+FETCH を使うべし。psql なら FETCH_COUNT。
結果をすべていったんメモリ上に保持しようとするので、
結果が 2GB を超えるとでメモリ空間使い切ってエラーになる。
ストリーム的に取り出す COPY か、小分けに取り出す FETCH が適している。

取得する側(クライアント)のメモリ消費の問題なので、
shared_buffers などサーバ側の設定は関係ない。

>>980
LIMIT OFFSET はこの目的には効率が悪すぎる。
983NAME IS NULL:2007/11/29(木) 15:04:57 ID:5OSGHAYb
>>982

ありがとうございます。サーバ側の設定は関係ないのですか。
とりあえずこちらもやってみます。
984NAME IS NULL:2007/11/29(木) 22:17:55 ID:lVNkhgwU
>>974
JPUGの分科会あたりにその類の文書って転がってないかな?
最新版には追随してはないだろうけど。
985EqpLIrlVtgpouey:2007/11/29(木) 23:30:47 ID:???
986QtlktZAqzLdbVE:2007/11/30(金) 00:45:41 ID:???
987NAME IS NULL:2007/11/30(金) 15:59:30 ID:/tqK65U/
http://postgresql.jp/document/pg824doc/html/arrays.html の「8.10.5. 配列内の検索」に

> ティップ: 配列は集合ではありません。特定の配列要素に検索をかけることはデータベース設計が
> 誤っている可能性を示唆しています。配列の要素とみなされるそれぞれの項目を行に持つ別の
> テーブルを使うことを検討してください。この方が検索がより簡単になり要素数が大きくなっても
> 拡張性があります。

とありますが、これは、下記のどちらの使い方が誤りの可能性があるという意味ですか?
・WHERE pay_by_quarter[2] = 10000 // 要素2のみで抽出
・WHERE 10000 = ANY (pay_by_quarter) // 要素全体で抽出

「特定の配列要素に検索をかける」だと、前者になりそうですが、文脈からすると後者に思え、
どう解釈すべきか迷っております。
988NAME IS NULL:2007/11/30(金) 16:04:53 ID:???
pay_by_quarter[2] = 10000 だべ

配列使ったら負けかな、と思ってるが結構機能あるんだな。
989NAME IS NULL:2007/11/30(金) 16:19:23 ID:/tqK65U/
そうすると、
「配列の要素とみなされるそれぞれの項目を行に持つ」って文が不思議じゃないですか?

行 → 列 なら、分かるのですが。
それとも、とういう設計もアリなんでしょうか?
990NAME IS NULL:2007/11/30(金) 16:51:15 ID:???
>>989
いくつあるかわからないのに列にできないだろ
アリというか、普通こうする。
991NAME IS NULL:2007/11/30(金) 17:21:13 ID:???
「特定の配列要素」という事は、要素数は固定という意味じゃないの?
992NAME IS NULL:2007/11/30(金) 17:46:15 ID:???
特定の要素というのが固定ならそもそも配列にしないでしょうね
993NAME IS NULL:2007/11/30(金) 19:21:58 ID:/tqK65U/
>>991
私も同じく考えました。

配列ではなく、連想配列なら意味が分かるのですが。
994NAME IS NULL:2007/11/30(金) 20:57:41 ID:???
「特定の配列要素に検索をかけることは」は
「配列内を検索することは」くらいに読み替えるべし。ANY のほうで正解。
原文は searching for specific array elements なのだが、
specific には大して強調する意味合いはない。

つまり、「配列を使う前に、第一正規化を検討せよ」って書いてあるだけ。
995NAME IS NULL:2007/11/30(金) 21:39:09 ID:/tqK65U/
>>994
了解です。
スペシャルサンクス。
996NAME IS NULL:2007/12/01(土) 18:48:08 ID:???
次スレって PostgreSQL Part 5 でいいのかな?
997NAME IS NULL:2007/12/01(土) 19:02:39 ID:???
>>996
それでいいと思います。
998NAME IS NULL:2007/12/01(土) 21:35:50 ID:???
.
999NAME IS NULL:2007/12/01(土) 21:36:26 ID:???
.
1000小倉優子 ◆YUKOH0W58Q :2007/12/01(土) 21:36:59 ID:???
1000ならジュースでも飲むか
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。