【Windows】 PostgreSQL8 Part.1 【対応】
2
RC1試した人まだ〜?(・∀・)チンコチンコ
4 :
NAME IS NULL :04/12/07 07:23:21 ID:40Yk3Ss7
(・∀・)?
>>3 昨晩セットアップしました。
まだ使い方がよくわからない _| ̄|○
7 :
NAME IS NULL :04/12/14 22:06:21 ID:+OauwUy9
ageて見よう(・∀・)
MsAccessからデータビューを見ようとした場合 データーベースにunique indexが設定してあると unix版8では正常に見れてもWindows版だと一部 データが#Deletedと化ける。 相変わらず糞だな。
8は相変わらず糞、と・・・・メモメモ
UNIX版がOKになったというのは、うれしい。
あんまり盛り上がらないね・・・ 日本のユーザー会のリリース情報にまだ紹介されてないってのもあんのかな?
まぁ、Win対応以外は表向き何が変わったというわけじゃないから、2chのスレで盛り上がるようなネタはないんじゃないの?
いまどき使い方がわからないってのも
>>5 くらいのものだろうし。
最近MySQLばかり使っているのでPostgreSQLの情報を追い切れていないんですが。
>>12 > まぁ、Win対応以外は表向き何が変わったというわけじゃないから、
え?アーカイブログとかPoint In Time Recoveryとかは現行バージョンでも
使えるの?
ここら辺の機能がすごく魅力的なのと、MySQL4.1.7の文字コード関連の
仕様改悪に嫌気がさしたので、version 8を待ってPostgreSQLに鞍替えしよう
かと思ってたんですが・・・
そういうのは裏向きで。
>>15 だって、アーカイブログとかリカバリーとか、RC1の段階で「いいよー」って話題が盛り上がるもんじゃないでしょ。
PITRってやっちゃいけないクエリーを発行したときも 旅に出なくてよさそうで、漏れも楽しみにしてる。
あのさ、みんなVer.7で結構満足していると思うぞ。 というか、8になって何が変わったんだ?
トランザクションのネスティングが出来るっていう話があった気がするんだけど、 お流れになったのかなぁ?
>>18 まず、上にも挙がってる Point In Time Recovery (PITR)。
あと Table Space の概念が追加された。
他には Save Point も追加された。
>>19 が言ってるトランザクションのネスティングのことね。
機能面ではこんなもんかな?
あとパフォーマンスもあちこちで向上している。
21 :
19 :04/12/20 02:35:24 ID:???
>>20 トランザクションのネスティング = SavePoint なの?
俺が期待したのは、
BEGIN;
SQL文
BEGIN;
SQL文
COMMIT;
COMMIT;
のような感じで動くやつ。
関数内でロックしながらINSERTやUPDATEしたくなる時ってありませんか?
こんな考え方、なんか拙い?
BEGIN; SQL文 SAVEPOINT name; SQL文 RELEASE SAVEPOINT name; COMMIT; って感じかな。 > 関数内でロックしながらINSERTやUPDATEしたくなる時ってありませんか? の意味するところがよく分からない。
いつの間にかRC2があるね。
24 :
19 :04/12/22 15:38:20 ID:???
>>22 > 関数内でロックしながらINSERTやUPDATEしたくなる時ってありませんか?
一度に2つのテーブルを更新するなど、一連の処理を一つのSQL関数で済ませたい場合、
SQL関数内で一つのトランザクションを確保したい。みたいな...
もちろん、関数を呼び出す前にbeginしておけば済む程度の話なんだけど...
リニューアルしたのか。 知らなくてびびった。
>>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」とは言わん。
7 で満足している人は互換性のある 8 にして、 パフォーマンス向上に驚くがいいさ。
windows版相変わらずダメダメだな
といいたいだけにみえる
8を賞賛する奴は まともに使いこなしてない奴だよ
正式版がでていない時点での
>>30 のような意見って、単にRCに過剰な期待してるだけに見える。
まともな品質すら達成できないなんて
楽しそうだな。
34 :
NAME IS NULL :05/01/19 17:54:18 ID:eDyiMXvw
リリースされたみたいだが。
>>30 じゃあ、具体的に批判しまくってください。
あいかわらず、unsigned intは使えないのね (´・ω・`)
37 :
NAME IS NULL :05/01/20 13:11:33 ID:8OD/vHuZ
windows板にreadmeに postgresql-8.0-ja.zip is a Japanese specific version. って、書いてあるがどこにあるのかわからない
Win2kに入れてみました。 サンデープログラマには勿体無いDBMSですが、適当にDB、テーブルを 作って試してみたところ、アドミンツール内でですが、漢字、半角カナも 表示出来るんで、ちょっと感動しました。 SJISはなんかダメみたい。
39 :
NAME IS NULL :05/01/20 15:53:19 ID:hF6eZA3A
>>38 > 漢字、半角カナも表示出来るんで、ちょっと感動しました。
おー、それはすごい
ところで、セットアップ時に 文字コードは何を指定すればいいのですか?
インスコして、ローカルからはアドミンツールつながるけど 他のマシーンから、アドミンツールがつながらない 出来た人いる?
文字コードは EUC_JPにしてみた
43 :
38 :05/01/20 21:36:13 ID:???
>>39 ごめん、セットアップ時の何にしたか忘れたけど、多分SJISだったかな?
新規DB作る時に、エンコード方法を選べるから、気にしないでもいいと思う。
あれから、VB6+ADOでテストしてみたら、これまた簡単。
DSNのサーバ名を、localhostじゃなくてコンピュータ名を入れていたので、
接続出来るまで時間がかかったけど、つながってしまえば後は簡単でした。
後、新規DBを作るときに文字エンコードをUnicodeでもEUC-JPでも、
漢字・半角カナの表示出来ました。
ドライバの日本語パッチの斎藤さんありがとうございます。
プログラミングなんて数年ぶりなんで、なんか楽しい。後はチラシの裏に書きます。
最初の接続設定がツールでできないのは、使いやすさを考えるとちょっと問題だね。
DB作るときにEUC-JPでもちゃんと半角かなやUNICODEのマッピング問題含めてきれいにとおる というかSJIS系は通ってるように見えて実はいまだに関数群がとかありそうで怖いからWinでもつかわん Postgresの日本語周りはかなり昔に通ってきた道で、比較的安定してるのがいいな mysql4.1は・・・orz
教えて下さい。 仕事でPostgreSQLを新規導入するんですが、ハードディスクの必要容量を見積もらなければいけなくなりました。 ポスグレのデータ型ごとの記憶容量の資料が見つからなくて困っています。 (INTなら4バイト、VARCHARなら文字数+1バイト みたいな資料です) 良い資料があったら教えてください。 ちなみにOSはソラリスです。
PostgreSQLの呼び方ってなに? 俺は「ポストグレス」。 周りはポスグレだけどなんか気持ち悪い
>>48 そういうのは大概FAQにある。
で、だな。オイラが代わりに探してやろう。
まず postgresqlの本山。
ttp://www.postgresql.org/ FAQつーのが見つからんが、多分Documentationってのがそうだろう。
言語ごとにFAQがあるみたいだな。Japaneseでよかろう。
「1.1) PostgreSQLとは何ですか? 何と読みますか?」
FAQの一番最初らしいな。
「PostgreSQLはPost-Gres-Q-L(ポスト - グレス - キュー - エル) と発音します。」
つーことだ。
51 :
NAME 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 ~ '表\示'; どうしたらいいんでしょうか?
意識的にエスケープしなきゃならないような環境で使うほうが厳しいんじゃね?
てか、SJISは正式サポートしたんだっけ? EUCな環境が無かったらUTFにするんだけどなぁ。
やはりWinでもEUCがデフォ あくまでもDB格納時のはなしだし、とりだすときがUTFだろうがSJISだろうが問題にならないしな
デフォルトはUTFがいいぞな。 じゃないとJavaで扱うとき「〜」が化ける。 8では確認してないけど。
>>55 EUCでぜんぜんばけないぞ
Javaの〜の問題はMS932の特殊なマッピング方法にある
ちなみにかなり前からこれを解消したJDBCドライバが普通に使われてるけど?
だからMySQLにくらべてPostgresのほうが問題が起きていない
>>56 あいかわらずってどういう意味だよ
Postgresを利用した業務系のシステムで一番つかわれているのはJavaかと思うが
MS932のマッピングがおかしいんじゃなくて、Java側のMS932へのマッピングがおかしいと思ったが?
UNICODEしらべてみそ MS932だけ変 Javaは忠実に実装しているだけ ただ、MS932がユーザー数多いので最大限の考慮が必要なのも確か
pgAdminIIIの1.2.0でフォント設定をMSゴシック等にしてみると とても面白いことが起きるよ
>>60 ん?やってみたけど・・・
どこがおもしろいの?
(再起動しないとフォントは変わらないみたいだけど)
釣られるやつが面白い。
可哀想な環境にいるんでしょうね。
65 :
NAME IS NULL :05/01/27 13:02:48 ID:lWjQEhZD
全然関係ない話なんですが いまPostgreSQLとEXCELでデータベースを作っていまして 疑問なんですが EXCEL使うことってグラフが割りと簡単に使える以外の利点ってあるんでしょうか? VBAは使っていますがEXCELな機能といえば大量のレコードを表から読んでるだけで それは旧データベース(アクセスなのですが)からの移行のためだけだと考えています。 運用に入ったらおそらくレコードが一個ずつ地味に増えていくだけなのでこういった作業はなくなるのです。 グラフ描画は使うことになるかもしれないですが。 で、実際にレコードを追加するときもVBAのフォームを使って済ませたほうが簡単そうな気がしてきます。 というのは一回の入力項目が可変なのが理由なんですが ようするにケースバイケースで違った入力シートを用意するのは面倒だからなんです フォームを使えばさらにAというレコードも追加したい場合はここをクリックみたいな感じで新しいフォームを表示させればいいのですが。 EXCELつかってらっしゃる方意見を聞かせてください
>>65 EXCELでデータベースって...元データから取ってくれば良いじゃん。
ACCESSからPostgreSQLへ移行し、EXCELをクライアントソフトとして使いたいって事じゃないの?
67 :
NAME IS NULL :05/01/28 12:43:33 ID:GZR1+sf5
XPで8.0.0使ってる人いませんか? インストールの最後で、サービスが開始できなくて とまっちゃうんですが >サービス 'PostgreSQL Database Server 8.0'(pgsql-8.0)を開始できませんでした >システム サービスを開始する特権を持っていることを確認してください XPって普段使ってないからよくわかんないんです アドミニ権限のユーザではインストールすらできないし 対策方法わかる方教えくだしあ
68 :
NAME IS NULL :05/01/28 13:41:07 ID:zslxpP17
XPProSP2でadministrator権限のユーザでインストールして動いてるけど。
>>68 レスどうもです。
まじすか。もう一回入れなおしてみます
うにくす系OSならcronでvacuumdb -aですが、 Windowsで定期的にVACUUMかけるにはどんな方法がありますか?
>>70 スレ違い。
Windowsで定期的にコマンドを実行すればいいだけだろ。
「スケジュール タスク」辺りでググれ。
72 :
NAME IS NULL :05/01/30 09:50:20 ID:7cAEIu0m
PostgreSQLの呼び方ってなに? 俺は「ポストグレス」。 周りはポスグレだけどなんか気持ち悪い
('A`)
>>72 PostgreSQLの誕生の歴史を調べれば、おのずとなんと読むのが正解かわかる。
ポストグレエスキューエルが正解ですね?
>>72 真の名前は教えないことになっております。
ポストグレス キュー エル が正解。
普通はポストグレスで通じるな。
LinuxにRPMで入れたときも、DB管理用のユーザ名がpostgresになってる事から、
>>78 で間違いない。
>>80 RPMの人が間違えてるかもしれないじゃないか!
Win32版、インストールするとdataディレクトリ以下が できちゃってるのな。locale付きで。 日本語の検索がおかしくなって判明。 dataディレクトリ内削除のうえ、initdb --no-locale で解決。
>>82 インストール中にデータベースクラスタのロケールとデフォルトエンコーディングが指定できたと思うけど・・・
日本語版インストーラではロケール'C'、エンコーディング'EUC_JP'が初期値になってたような気が。
仕事でSQLを使う事になったので、勉強のためPostgreSQLを入れてみました。 環境はMac OS X(10.3.7),PostgreSQL8.0.0 昨日の夜から寝ずに調べてようやっと、今日のお昼頃にデータベースとテーブル(とその中身)を 入れられました。(UNIXもそう経験無いので時間かかっちゃった) これからこいつにガンガンデータを入れて操作を覚えようと思います。 これから何かと質問させてもらうと思いますが、その時は宜しくお願いしますね。
おう。どんとこいや。
86 :
84 :05/02/06 22:38:06 ID:???
>>85 さん
ありがと
がんばります。
かなり四苦八苦していますがいくつかinsert文でデータを入れて、
indexを作りようやく準備が終わったという感じです。
この後の「これを使える様にしておけ!」という構文等ありましたら教えてください。
>>86 それよりも、マニュアル読めるようにしておけ。
>>83 >インストール中にデータベースクラスタのロケールとデフォルトエンコーディングが指定できたと思うけど・・・
通常版の「postgresql-8.0.zip」で確認してみましたが、デフォルトの
ロケール「C」エンコーディング「SQL_ASCII」でした。
エンコードは間違いなく「EUC_JP」にしてたんですがねぇ。
今は日本語版インストーラーがダウンロードできるようになったんですね。
今度試してみます。
>>86 (´-`).。oO( なんで INDEX 張るのと INSERT するのがそういう順だろう… )
>>89 インデックスなしでのデータ挿入の方が速いから、
大量に初期データを入れる場合なんかは、
後でインデックスを作るけど。
まぁ、インサート後でインデックスを作るのはアリだろ。。
92 :
84 :05/02/09 00:25:27 ID:???
マニュアルですか。頑張って読む様にします。アドバイスありがと。
>>89-90 ひょっとして何かおかしかったですか?!
順序がおかしいとかかな?
調べてみます。ヒントありがと。
>>92 マニュアルは隅々まで読むんじゃなくて
どこにどんなことが書いてあるのか大体のところを把握できれば十分。
最初とメジャーバージョンアップ毎くらいは隅々まで読み返してもいいかも。 リリースノートだけでは差分の差分の差分の……って感じで見落としていたものを発見出来たりするし。
隅々まで読むのは理想だけど、入門者にとって現実的じゃないからな。 しかし、PostgreSQLの使い方はマニュアルに書いてあるということくらいは実感しておいて欲しい。
96 :
84 :05/02/13 14:54:42 ID:???
みんさんありがと。 まずはマニュアルを良く読む事ですね。 隅々というのは骨が折れるけどそれが習得の一番の近道かもしれませんね。 読みながら触っているんですが、出来ると「すっげー!」「おもしれー!」を、 連発してちょっと家族からは気持ち悪がられていますが、それでも楽しんで勉強してます。 面白い物ですね。<SQL
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ツールがらみのバグなのかもしれんけど、一応きになったので ご教授いただけるとうれしい。
そのツールでは "" で括られているのではないかな。 =# 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
>>98 おお。確かに、できましたです。
まだ、使いはじめたばかりなのでいろいろと
知っていなくちゃいけないところをしらないの
でしょう。頑張って、勉強します。
素早いご教授ありがとうございました(__)
DBDモジュールのインストール方法がわからん
perl Makefile.PL make make install ダルゥ。
はじめまして。 最近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の部分をコメントアウトしてやると全て正常に実行できました。 なので悪さしてるのはこの辺かと勝手に思ってるんですが・・・ ちょっと意味不明かも知れませんが、アドバイスでも何でもいいんで助言いただけたらと 思います。長文&駄文失礼しました。
まずふつうのデータベースの仕組みをおぼえろ
複数行を返すなら RETURN NEXT を使う。 1行だけ返したいなら RETURN rec でいい。
105 :
102 :05/02/25 09:20:01 ID:???
昨日、質問した102なのですが、別会社で作られてるSQLファイルの事で また疑問が出てきたので教えてください。 ファンクションを作成してReturnで戻り値を返すのはいいんですが、 そのファンクションの呼び出し元がどこを探してもないのです。 こういうのってSQL実行する時にエラーの原因になりますか?
そんな事より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を先に覚えなさいってこった。
10文字くらいにまとめてください。
まとめてみよう RETUENって何?
わかりやすかった。 感動した。
110 :
NAME IS NULL :05/03/01 18:05:37 ID:7guaqeqz
>102 もしかして、createlang してないだけでは?
111 :
NAME 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バックアップを リストアするのはどうすればいいのでしょうか? これができればコマンドラインツールに拘る必要はないのですが。
113 :
NAME 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 田中義春 向日葵組 としたいのですが、読み の挿入がうまくいきません。 表示部分には、読みを表示させたくないのですが。 どうしたら、いいのでしょうか?
テーブル定義は正しい? 読みらしきものが定義されていませんが…
Win版8.0.0-beta3(開発用 : 仕事が途切れなくて入れ替える暇なし)なんだけど、 int4,float8,float8の3カラムのテーブルを作って40万行ほど突っ込んだら テーブルファイルサイズが68MBにもなってた。 単純計算で1行20byte*40マソで8MB+α程度かと思ってたんすけど.... 今まで記憶容量の計算なんてしたこと無かったけど、結構食うもんなんだな。 int4カラムの主キーインデックスだけで8MBある。orz
116 :
111 :皇紀2665/04/02(土) 01:14:13 ID:???
自己解決しました。 コマンドプロンプトを「別のユーザとして実行...」でpostgresユーザとして 立ち上げてから実行するとコマンドラインツールが使えました。 ところでインストーラが作ってくれたpostgresユーザはどうやったら消すか あるいはパスワード変更できるんだろう? ちなみにOSはXPhomeSP1です。
使おうと思ったがインストールすら失敗してできん。 くそが。
インストーラ版を使っても?
寧ろどうやったらインストールできなのか知りたい
ただのアンチとみた アンチは低脳だからねぇ
122 :
118 :2005/04/21(木) 07:40:51 ID:???
>>121 アンチって俺がか?
俺はpostgreSQLの機能の豊富さ好きだぞ。
ちょうど使いたい機能があったし。
ところでインストールは解説サイト通りにインストーラ使ってやったんだが出来なかった。
まぁもう少し粘ってみるけどな。
もしそうならどこで躓いたか書くと 誰か助けてくれるかもよ
インストール時の注意点を守らないからだったら怒るよ
125 :
118 :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)をインストールできませんでした。 システムサービスをインストールする特権を持っている事を確認してください。」 この特権の確認ってどうやるの?
126 :
118 :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とパスの情報が残ったって事はどっか別のとこに記録されてるはずで それが何処か分からないから消せないし。
127 :
NAME IS NULL :2005/04/23(土) 09:08:41 ID:6Z+WB6dZ
別スレでも聞いてます。 VBからPostgreSQLのODBC設定をしようと思い、SQLConfigDataSourceメソッドを使ってます。 普通に管理ツールからODBCの設定画面を開いて「textを長文字列として扱う」項目があるんですが、 VBで記述するにはなんて書けばいいか知ってる人がいれば教えてください。
128 :
NAME IS NULL :2005/04/23(土) 15:49:17 ID:3A/gShpZ
1
>>18 ログオン失敗で先にすすめないなら、XPproならコントロールパネル
から管理ツール、「コンピュータの管理」と入っていき、postgreインストーラ
で作成したユーザアカウントのゴミを削除すれば、つぎはうまくいくはずだ。
Windowsでpostgresqlを使おうするやつはほとんどいないようだ。
UNIXやpostgresで苦労したのだろう。
石井達夫というのがユーザ会の会長か理事長?らしいが、
会員になるに許可がいるらしい。現在ユーザ会員数は2500人程度しかいない
のでpostgresqlは一部のオタクだけで固着してしまっているようだ。
作ったシステムは死に、やがて自然消滅するのも時間の問題だな。
検索するにしても英数字だけでなく、漢字、ひらがな、カタカナ、全角
半角と日常表現が多岐に渡っている日本のデータベースの有効活用範囲
は英語圏よりも大幅狭いはずだ。無料とはいえmysql、postgresqlに
夢中になる必要は全くないぜ。
ウェブサーバと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も切っています。
>>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台のサーバはハブでつなげているだけです。
すいません。こっちでした。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?
>>132 >>133 書き間違い?
DBサーバーが、192.168.1.11 なら、postgresql.conf は
listen_addresses = 'localhost,192.168.1.10'
↓
listen_addresses = 'localhost,192.168.1.11'
と思うんだが。
>>128 コンピュータの管理を開くとローカルユーザという項目があると多くの解説サイトには書かれているがそれが無い。
135 :
118 :2005/04/24(日) 02:56:14 ID:???
pgadmin3でサーバー全部削除してpgadmin3を再起動したら 最近追加したアカウントのサーバが現れてうまくいった!
>>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.
>>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にしたほうがよいと思われ。
>>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っていうのを勉強してみます
139 :
NAME 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の再インストールという方法に終着していました。 この状況についてどのような原因や解決策が考えられるでしょうか?
postgresユーザー“だけ”が読み書きできるようにしてごらん
141 :
139 :2005/04/25(月) 14:42:34 ID:TW8wBixv
>>140 caclsコマンドでpostgresをwindowsサービスとして起動するユーザ・postgresに接続する際のユーザ両方について
それぞれのユーザのみにフルコントロールを与えてテーブルスペース作成を試みましたが結果は同じでした。
cacls C:\pgsqlとして表示した時の権限者が、
hostname\username となっているのですが、このhostnameがpostgresサーバに設定してあるものと異なるのが気になったのですが
hostnameの部分の変更方法が分かりません。
ドメイン参加してる? 変更は無理だよ、追加して消す、とかしないと
143 :
139 :2005/04/25(月) 18:15:12 ID:???
回線を介したアクセスではなく、ローカルのマシン一台の中で操作しています。 caclsコマンドで表示した時のhostnameはFMV〜というコンピュータの名前で、 postgresサーバのホスト名はlocalhostと設定しています。 cacls C:\pgsqlの結果は FMV〜\username pgadmin3のサーバプロパティに表示されるホスト名はlocalhost という状況です。
このスレで良いのか分からんけど、ダブルバイト文字の = での比較ってできないの? 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 行)
可能な限りDBに高速で書き込む方法について、なにか良いアイディアはありませんか? Cなので手段は選ばないです。
fd = fopen(filename); write(fd, ...);
>>146 HDDへの書き込み速度次第じゃない?
CPUの演算やらに比べて、明らかに此処の部分で速度落ちるんだし。
書き込みだけってんなら、インデックスは張らず、WALの同期書き込みも切ってしまえば。
150 :
NAME IS NULL :2005/04/26(火) 16:23:14 ID:IyLFLaTL
これって VBからつなごうとすると ODBCデータソース経由でしか接続できないんだろうか・・・・ 標準ではODBCドライバしかないっぽいし・・・ だれかOLEDB経由の方法接続知ってる香具師いたら情報キボン
>>150 今、確認してみたけど、標準で入ってたよ。8.0.1。
ポスグレのインストール時に、どのインストールタイプを選択したのか覚えていないんだが、
カスタムインストールで何か選択しないといけないのかもしれんね。
ちなみに接続文字列はこんな感じでOKだった。
Provider=PostgreSQL.1;Password=mypass;User ID=user;Data Source=localhost;Location=testdb;Extended Properties=""
日本語がきちんと通るかどうかまでは調べてないけど。
>151サンクス 入れ直して確かめてみる ノシ
現在、RedHatLinuxでPostgreSQL7.2.2を使っています。 今回XPで8.0に移行しようと考えているのですが、 その際のバックアップ、リストアーについて気をつける点等ありますか? pg_dumpallで*.outファイルを作成し、psqlコマンドで試しているのですが、 認識していないようです。
気をつけるのは、環境の差くらいかなあ psql を実行する環境がShiftJISだとちょっとめんどい
>>155 そうですか。なんとかやってみます。
有難うございました。
157 :
仕様書無しさん :2005/06/10(金) 04:32:41 ID:vqj8Y6od
postgreはテーブルのレコード数の上限とかありますか?
前はOID(32bit)が限界を作ってた気もするが 今はWITHOUT OID もできるしどうなんだろ
制限なしってかいてあることから32bitどころじゃないだろうね
PostgreSQL FAQ に書いてありますよ
ところでPostgreSQLの呼び方ってなに?
早まって別スレにも書いてしまったが、 psql 8.0.3 for windowsで\hなどと打つと、 'more' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と言われるのは、私だけでしょうか?
>>163 more コマンドへのパスが切られてないと思われ。
%windir%\system32 にパスを通せば大丈夫のはず。
>>164 ありがとうございます。
そーですか、私だけでしたか
もしかしたらpgsqlに関係なく、単にj2sdkの問題だったらごめん。 RecordSetのカーソルタイプを指定しなかった場合、<RecordSet>.first() が7.4.xだと問題なかったのに、8だと "SCROLL可能なRecordSetじゃないとだめ" と怒られるようになったんですが、FORWARD_ONLYなレコードセットで先頭位置決 めは <RecordSet>.next(); を使うしかありませんか? ちなみに next(); すら書かなかった場合は "ResultSet not positioned properly" で怒られます。
FORWARD_ONLYってのがなにかがわかっていればね まぁどのDBでも基本は順方向
168 :
tsearch2 :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
locale
170 :
tsearch2 :2005/06/27(月) 18:49:41 ID:kZmBp1gp
>>169 ありがとうございます。
一歩前進できましたが、次に更なる問題が出てきています。
同じくデータ投入時に
ERROR: cache lookup failed for function 23825
と言うエラーが発生しています。
171 :
NAME IS NULL :2005/06/28(火) 14:09:05 ID:FyvKDDrO
全然POSTGRES人気無いですね。 意外だな、玄人好みのDBと聞いていましたから。 MySQLのほうが使いやすいですか。
MySQLで満足してるならそれでいいんじゃね? PostgreSQLもWindows版は出たばかりだから ここは静かだろ
>>171 postgresは人気ないのですか?
Windowsのスタンドアロンのような小規模で簡単なシステムだと
MySQLでも良いのかもしれませんけど、
大規模で複雑なシステムだとpostgresqlでも役不足感がまだある
MySQLなんて当然使えない。
そのスタンドアロンのような小規模なシステムではSQLiteの方が 使いやすかったり。。。
175 :
NAME IS NULL :2005/06/28(火) 19:40:45 ID:FyvKDDrO
>>173 詳しく聞かせてください。私HIBERNATEとPOSTGRESをWinのサーバーで 使いたいなと思っています。 どちらも将来有望な技術らしいですし。 MySQLも大変使いやすいなと思うのですが、将来は大規模なシステム開発 にも是非携わってみたいとおもいますから、POSTGRESを勉強しようと おもってここへ来たんです。 意外や意外。あまり盛り上がっていませんね、Win版のPostgres...
初心者ならPostgreSQLのほうが管理ツール最初からついていたり ドライバ周りもセットアップされるしらくだと思うぞ
177 :
HYPER& ◆.12JFsoCi6 :2005/07/01(金) 13:32:03 ID:IMbhKt4o
>>176 どうもありがとうございます。私も早速試してみようと思いまして
ダウンロードしたのですが、ちょっとサーバーをリセットできない
状態にありまして。
あと一つだけ伺ってもよろしいでしょうか。Win版Postgres8.0で
何が一番困りますか?MySQLではできたのに、Postgresじゃこんな
こともできないのか、という問題がありましたら、是非事前に
知っておきたいです。
みなさん、どうぞ宜しくお願い致します。
MySQLから移行したクチだが古いバージョンのドライバに注意くらいか
179 :
NAME IS NULL :2005/07/01(金) 21:35:50 ID:IMbhKt4o
>>178 どうもありがとうございます。 MySQLに何かご不満でもあったのでしょうか? 私はPOSTGRESの日付関数に大変魅力を感じています。 でも、HIBERNATE使うとMySQLもPostgresも大差なくなってしまいますが。 どうでしょう、やはり、豊富な関数群に魅力を?
4.1が正式リリース後も8ヶ月くらい日本語がまともに通らなかったのを放置してたから 移行した連中が多いから俺も移行したよ サブクエリー対応したのはいいけどSQLも結構バグだらけだったり 環境のファイルシステムのキャラクタセット無視してUTF8でファイル作ったり ひどいのにあきれた 結果期待してなかったけどパフォーマンス面でもまったく問題ないし ライセンス代が浮いたくらいかな スタンドアロンの組み込みDBならHSQLDBのほうが楽だけどね 最初から各種ドライバがセットアップされてGUIツールがついてるから MySQLより初心者には優しいよね MySQLはコンフィグファイルをテキストエディタで自分で書き換えないといけないし GUIツール使うとその設定を吹き飛ばしてしまったり泣ける MySQLはライブラリのライセンスがLGPLなときから使ってたから愛着はあったんだけど フリーでマルチユーザー、Windows対応なDBがほしかっただけだからもういいや
漏れも日本語周りがクソだったのと、タイミング良く8.0が 出てきたこともあってポスグレに移行した。 機能的にはポスグレ > MySQLなので移行の弊害は 今のところない。 データ件数が少なくて、単にデータの出し入れ程度が 出来れば良いものはSQLiteを使っている。 MySQLは中途半端な位置づけになったかな、という感じ。
>>175 Windowsのってのがイマイチな考え方なのでは?
なによりある程度以上の規模のシステムを構築されるなら
BSDやLinuxをサーバーとしてお使いになる方が楽ですよ
183 :
NAME IS NULL :2005/07/02(土) 10:20:40 ID:I2kVu6Mc
>>180-182 どうもありがとうございます。やる気がどんどん出てきました。
このスレがあまり盛り上がっていないから、もうMySQLが成熟したんだな
と思っていましたが、Postgresはやはり高く評価されていますね。
まだ、Windowsに移植されたばかりなのが気がかりです。
>>182 開発もLinuxでされているのでしょうか?私もそうでしたけど、
もうWin2003Serverは本当に良くできています。値段も安いし、不満は
ありません。
>>183 Windowsが良くできているのはそれで良いのですが
サーバとして見た場合、GUIも不要ですし無駄なデーモン(サービス)も
起動しなくて良いのでは?って意味ではBSDやLinuxの方が有利で
カストマイズも楽ですよ、仕事で使われているこれらのフリーのOSは
無料だからって理由で選択している人はいないと思います
無論Win版のpostgreSQLにはそれなりの価値もあります
テスト環境やスタンドアロン用システムの開発に使えば
将来、BSDサーバやMacでさえ動かせる可能性が出てきますから。
(これはMySQLでも同じですけどね)
>>184 どのOSで動かすとPostgreSQL速いの?
MySQLでは日本語禁止にできたのに、PosgreSQLではできない。 日本語周りでトラぶったら全部俺のせいにされる。_no
187 :
NAME IS NULL :2005/07/02(土) 14:18:25 ID:I2kVu6Mc
>>186 ちょっと不安になる書き込みです。
わたしはMySQLですべて文字列はUTF8で取り扱っています。
日本語禁止にできないとは、つまりどういうことなのでしょうか。
私はUTF8でLIKEで類似文字列の検索など、問題なくできています。
ブラウザー(IE)のユニコード表示って綺麗にするにはちょっとした
テクニックがいるから、まだまだユニコード万能とは言えませんが、
多国の言葉の取り扱いはだんだんとできるようになってきましたね。
日本語の文字化け等でDBの問題なら諦めがつくけど、 使う側の不具合まで押し付けられるのが鬱。 俺 「MySQLでは日本語の扱いに問題があります。」 上司 「それじゃ仕方がないな。」 俺 「PosgreSQLでは日本語の扱いに問題があります。」 上司 「そんなわけないだろ。」 俺 「そうですね。」
ワロタ
191 :
NAME 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"? と出ました。 どうすればいいのかアドバイスお願いします。できれば、優しく教えてください。
>>191 cygserverとpostmasterを起動してる?
なぜにWinネイティブ版ではなくワザワザCygwin環境で構築するんだろ。。。
194 :
NAME IS NULL :2005/07/24(日) 18:55:41 ID:qAy7nOx4
>>192 cygserverは起動させています。postmasterの起動はどうすればいいのでしょうか?
195 :
192 :2005/07/24(日) 19:11:52 ID:???
>>194 Cygwin付属の文書 (たぶん /usr/share/doc/Cygwin/postgresql-7.4.5.README )を読むべし。
196 :
NAME 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
とでました。なにを直せばいいのでしょうか?
Cygwinはよく知らんが、initdbをして無いんじゃないのか?
たぶんそれだろうね。 インストール時のオイラのメモでは、こんな感じでインストール・設定したっぽい。 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でお好みに。
200 :
NAME 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 と出ました。これは、インストールの仕方が、間違っているのでしょうか?
なんでここでcygipcが出てくんの
202 :
NAME 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 になりました。この場合は、どこを直せばいいのでしょうか?
204 :
NAME 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"?
ってでてきました。。これって、どこかの設定が間違っているんでしょうか?
どうやってpostmasterを起動させたの? createdb の引数は?あと環境変数も
207 :
206 :2005/07/25(月) 02:51:38 ID:???
あ、起動してた(つもりだった)のか... でも、起動してなさそうな。
208 :
NAME 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
です。何か、付け足したりしたほうが良いです?
PGHOST もあったほうがいいかも。 もしくは、 -h オプションで localhost 指定するとか。 psql -l で template1 は見える?
210 :
NAME 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()関数で取れたんですけどね
>>210 SELECT
CASE
WHEN timestamp1>timestamp2 AND timestamp1>timestamp3 THEN timestamp1
WHEN timestamp2>timestamp3 THEN timestamp2
ELSE timestamp3
END AS maxtimestamp
FROM (サブクエリ);
カラムが増えると大変だなぁ。なんかもっといい方法があった気が
しないわけでもないが。
212 :
210 :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になるようですね 最初これが原因で配列が取れなくて時間掛かった
postgreSQL8の日本語版インストーラを使い、 インストールしようとしたのですが、 「次へ」をクリックして行き、"サービス構成"のところで、 パスワードを入力せずに「次へ」を押しました。 すると自動的にパスワードが生成されたのですが、 このパスワードがどこにあるのかわかりません・・・。 インストールを途中で中断して、また最初からやりなおそうとしているのですが、 "サービス構成"のところで、パスワードが間違っているといわれ、 インストールが先に進まなくなってしまいました。 自動生成されたパスワードを知るか、もしくは、最初からやりなおしたいのですが、 どうすればよいのでしょうか? postgresql-8.0-ja.msi ↑このファイルをダブルクリックしてインストールしようとしています。 8.0.3です
214 :
213 :2005/08/02(火) 16:25:05 ID:???
アナルにポッキー入れてやってみたらできました。 ご迷惑をおかけしました
ホントかよw コントロールパネルの管理ツール-コンピュータの管理-ローカル ユーザとグループ-ユーザにて postgresユーザを消せばOK。パスワード再設定でもいいと思うけど試したことない。
そうか これからの時代はアナルポッキーか
217 :
NAME IS NULL :2005/08/26(金) 16:16:06 ID:RDFB6LxW
8.0.3なんですが、 ファイルシステムバックアップ(要はデータフォルダのコピー)を試しているのですが、 これのリストア方法をご存知の方知っている方いらっしゃいますか? 単純にdataフォルダを戻すだけでは、内部エラーでサービスが起動しませんでした。
218 :
NAME IS NULL :2005/08/26(金) 16:37:08 ID:RY8JCKjP
★★★ また韓国、意図的な、でっち上げ反日報道 ★★★ 韓国の大手テレビ局が8月15日のニュースで報道した「旧日本軍による生体実験」番組が、実は真っ赤なウソ、中国映画の盗用でっち上げだった。 韓国のマスコミは反日番組で、この種のでっち上げ「歴史歪曲(わいきょく)」をよく行うが、今回の事件で 「日本糾弾ならウソも平気」 という腐敗体質が改めて確認された。 番組では戦前、旧日本軍731部隊の実験の様子を「白黒の記録フィルム風」に紹介したが、視聴者から「映画の場面と同じだ」と抗議の声が上がり、悪質なでっち上げが露呈した。 この中国映画はカラー作品だが、テレビでは本物に見せかけて「白黒」に変えられており、意図的なでっち上げであることは明白。 日本の民主党(岡田党首)は、日本国内に数十万人もいる反日的な在日韓国・朝鮮人に日本の選挙権を与え、民主党に投票させようと画策している。 在日韓国・朝鮮人の大部分は、戦後のドサクサで密入国した不法滞在者とその子孫だが、強制連行されたとウソをついて被害者のフリをし、日本国内に居座って税金も払わず、毎月二十数万円の生活保護をもらい、ぶらぶら遊んで暮らしている。
>>217 マニュアルくらい読んでからバックアップしようね
220 :
NAME IS NULL :2005/08/27(土) 04:44:49 ID:xofK+FfR
Windowsネイティブなポスグレたんの嫌な所はありますか?
pdAdminVでバックアップしようとしてるんですけど、 バックアップしたものをリストアしようとすると 文字化けでエラーになってしまいます。 テーブルの文字コードがEUC_JPなのでそれが原因だとは 思われるのですが、EUC_JPのテーブルをpdAdminでバックアップ するのは無理なんでしょうか?
>>220 今のところずっと使ってるが特に問題は出てないな
>>222 概ねドーイ
でも、メモリリークしてたりしないかね?
しばらく使ってるとスワップが多発するのだが。。。
一緒に使ってるEclipseかもしれん。
224 :
221 :2005/08/29(月) 15:25:19 ID:???
>>223 うちはそういうの無いよ
Eclipseだと思われ。俺はそれ使ってないし
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
>>225 VBのことなんぞわからんが、単純に接続増やしてるだけなんじゃないの?
増えた分閉じてるのか?
227 :
225 :2005/09/06(火) 08:06:10 ID:7nT6CzOz
なにやら、SQLserverだとプロセスが増えつづけるって事は無いらしいんですよ。 なので、ポスグレ固有の何かがあるのかなーとおもいまして。
228 :
NAME IS NULL :2005/09/06(火) 11:32:21 ID:VN8kHZyv
貢献モジュールのFull Text Index が気になってます。 日本語で使えますか?
229 :
NAME IS NULL :2005/09/06(火) 20:40:01 ID:599rx19x
>>227 だから向こうのスレで書いたんだが。
SQLサーバは多分サーバが接続をスレッドで受けるけど、こっちはプロセスで受けてる。
あとはADOとODBCの仕様になるが、ADOのリフレッシュを見ると、開くまたは開きなおすと書いてある。
この開きなおすに閉じる動作が入ってるかを疑って、リフレッシュ前に一旦クローズなんど突っ込んでみては?
>>229 俺もそう思ったんだが、いちいち閉じてたらリフレッシュ呼ぶ意味がないんだろーなー
231 :
225 :2005/09/07(水) 10:34:04 ID:???
>>229 Closeをいれても変化なしです。
というより、
前述のコードではDB接続してるのはRefreshの瞬間だけなので
その前にCloseすることは出来ません。
大本になってるコードがあるのですが
(それはRefreshより前に明示的にConnectionしてある)
そちらで無理やりクローズしたところ
Refreshもされず、その後の動作に異常が発生→エラートラップに引っかかる
といったかんじです。
>>231 おもしろそうなので、やってみた。
Postgres8.0.1 → Refreshの瞬間にプロセスが増えてすぐに元に戻る
Postgres8.0.3 → Refreshの度にプロセスが増え続ける
8.0.2は環境がなかったので未確認。
Postgres本体 or ADOドライバのバグかもね。
Postgres-MLにでも投げてみたら?
233 :
225 :2005/09/07(水) 11:53:06 ID:???
>>232 素敵な情報ありがとうございます。
さっそく手続きを行いたいと思います。
基本的なことですみまそん。 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ですた・・・ よろしくおながいします。
↑thx♥ 探すの下手な俺orz
plpgsqlからDOSコマンドの実行できますか?
239 :
NAME 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[] 型にして、 この先どうしたらいいかわからん。。なんかもう泣きそう 誰か親切な人、教えてください
240 :
239 :2005/10/07(金) 17:20:23 ID:???
自己レスです Npgsqlのドキュメントを読んでいたら、 Connection String parametersの中に Encoding とあった 早速、Connectの接続文字列に「Encoding=Shift_JIS」と設定してやったら うまく行くようになった。ここまで2日潰したけど_| ̄|○ あぁ、ドキュメントって読むもんだなと思った秋の夕暮れ .NETからPostgresに接続するなら Npgsql マジでオススメ。 ADO.NET準拠だから OracleClient と同じ感覚で使える。
241 :
239 :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;"
PostgreSQL 8.0.4 for Windows日本語版、リリース! age
243 :
NAME 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
>>243 スタートメニューのPostgreSQLのところに、
サービスの起動、サービスの停止ってあるだろ。
使いたいとき以外は、停止させておけばいいよ。
>>244 起動時に実行させないようにしたいんだけど。
毎回手でスタートメニューからサービス停止をクリックしないとダメぽ?
>>245 Windowsの基本的な使い方は板違いかと。
「windows サービス 起動 停止」でググってみ
コントロールパネルの管理ツールの「サービス」にあるPostgreSQLのプロパティで、 スタートアップの種類を「手動」に変えれ。 変えた後は、回線切って吊ってこい
249 :
NAME IS NULL :2005/10/11(火) 16:37:47 ID:jw2nGrQt
250 :
NAME IS NULL :2005/10/12(水) 15:16:20 ID:w0CXzOKJ
linux環境でのバックアップで、 vacuumdb , pg_dumpを定期的に実行するシェルを作りました。 いざ実行してみるとvacuumdbでパスワードを聞かれるのでそこでとまってしまいます。 パスワードを聞かれない方法またはオプションから渡す方法はありますでしょうか?
>>250 そのシェルスクリプト内で環境変数 PGPASSWORD に設定すればオケ。
#!/bin/sh
PGPASSWORD=パスワード
export PGPASSWORD
/path/vacuumdb xxxx とか
/path/pg_dump xxx など
252 :
NAME IS NULL :2005/10/12(水) 16:17:35 ID:yHibahQH
>>251 できませんでした。
ありがとうございました
253 :
250 :2005/10/12(水) 18:15:57 ID:???
.pgpassを使う方法でできました。ありがとうございます。
>>252 cronを実行してるユーザの問題かねえ?
途中で書き込んじゃった
>>252 cronを実行してるユーザの問題かねえ?
それとも環境変数PGUSER=ユーザ名が無いせいか?
じつは環境なくて聞きたいんだけど WindowsXP & VB6 もしくは WindowsXP & VB.NET2003 からLinuxDBサーバ上にあるポスグレ8に接続する時に 何か特別な事ってある? Windowsサーバにテストでインスコしたポスグレには普通に繋げてるんだけど・・
>>255 じつは8.0とか8.0.1を使っているとか
ヒント:pg_hba.conf
>258 >259 「Windowsサーバにテストでインスコしたポスグレには普通に繋げてるんだけど・・」 ということなので、その辺はクリアしている、と思いたい。 であれば「何か特別な事」はない。
>>260 Win鯖に接続って同一PC上でやってるだけだと思うけどな
質問者が戻ってこないのできっとうごいたんだろ
>>261 クライアント環境がWinXPってあったからさ・・・
XPシリーズにサーバーってないっしょ。
どうでもいいか。動いたんだろ。
263 :
NAME IS NULL :2005/11/20(日) 06:34:04 ID:2zcdASaW
どうしてもインストールできません。 postgresql-8.1-ja.msiを起動して、 任意のアカウント入力後 パスワードを入力してインストールを開始すると、 「内部のアカウント探索に失敗しました:アカウント名とセキュリティID の間のマッピングは実行されませんでした」「致命的なエラー」 とエラーが出てインジケータが逆戻り。 アカウントはPC管理者権限のものでも試してみてもダメです。 どなたか分かる方いたら教えてください。
264 :
263 :2005/11/20(日) 06:35:53 ID:???
OSはwindowsXP Home です。
>>263 Administrator権限がないユーザでWindowsにログインしてない?
266 :
263 :2005/11/20(日) 08:25:09 ID:???
ログインユーザは「コンピュータの管理者」になってます。
267 :
NAME IS NULL :2005/11/20(日) 08:36:58 ID:aQbjk/iW
>>263 同じ経験あり 俺の場合、専用のユーザ作った どうもAdminユーザではPostgres起動できないみたいなことをどこかで読んで(つーかインストール時にでてくるエラーで、俺はそう言う意味に読み取ったんだよたしか) 専用のユーザ作って、インストール時にでてくるユーザ入力欄にそのユーザ入力して(つーか最初からpostgresになっているはず)インストール成功 で、その後は普通にAdminユーザでもなんでもPostgres起動できるわざわざ作ったユーザでなくてもOK どうも、こういう経緯でインストール成功したということで単純に「Windowsのユーザ作成(postgresユーザ)」に失敗しているとしか思えない それはそうと、このスレの下にあるPostgresのスレの748なのですが誰かわかる人いたら教えてください(泣
268 :
263 :2005/11/21(月) 23:23:05 ID:BD+L+6jB
レスありがとうございます。 でもアカウントの作成はやっぱりできませんでした。 XPのユーザーアカウントを新規作成 →Postgresのサービスアカウント名欄に新規作成したXPのアカウント名を入力。 →Postgres内部のサーバー管理用アカウントにpostgresを入力 エラー 「内部のアカウント探索に失敗しました:アカウント名とセキュリティID の間のマッピングは実行されませんでした」 サービスアカウントのユーザ名と、Postgres管理用アカウント(postgres)を 入れ替えてみてもダメ。両方を同じアカウント名にすると 「アカウント名が既に生成されています〜」という旨のエラーが出て失敗。 ドメイン名に問題があるのかなんなのか…原因が分かりませんでした。 そこで、インストール画面の途中に出てくる「サービスアカウントを作成する」のチェックボックスを オフにしたところ、何の問題も無くインストールすることができました。 ホントはダメなんでしょうけど、個人でのローカルな使用なので無事インストール完了ということで…
PCのユーザーとPostgresのユーザーがあるんだよ こんなもん、わかってればなんてこと無いんだけど ユーザー管理したこと無いとひっかかるもんなんだな
でもあのインストーラのメッセージは分かりにくい希ガス 知り合いも一度セットアップに失敗した後 ユーザーの問題でずっと失敗し続けていた
271 :
:2005/11/24(木) 23:53:37 ID:???
Postgres SQL CEってどうですか。できたばかりだけど ORACLEマスターのように無駄に費用かけるより、 この資格とってとりあえずDBのスキルとするほうが懸命に思えてきた。
とりあえずDB使ったアプリをガンガン作るほうがいいかも 業務系みればいくらでも
273 :
NAME IS NULL :2005/12/15(木) 18:40:30 ID:+ouoDcGk
age あがってけろ
274 :
NAME IS NULL :2005/12/16(金) 07:08:13 ID:vm7yBoZ9
SELECT DISTINCT col FROM tbl; これ、colに入ってるのが半角だったらうまく通るんだけど、マルチバイト文字だと 重複したレコードが帰ってきてしまう。 これって、設定とかで回避できるんですかね。 ちなみに、Windows用の8.0.1です。
>>274 おそらくロケールがC以外になってると思う
no-localeでdb作り直すと治る
277 :
NAME IS NULL :2005/12/21(水) 16:21:46 ID:8BF8onPp
語ろうのほうにも質問投げたのですが、こっちの方が良さそうなので。。。 一度インストールして運用してたDBを別のDBにデータごとコピーしたいんですがどうすればいいでしょうか? OS入れなおしたせいで、ソフトは入ってない状況になってます ちなみにOSはwindows2kです インストール→フォルダをコピー とかでいけそうな気はするんですけど、誰か情報もってませんか
OSとCPUとPostgreSQLのバージョンが同じならコピーでいける そうでないなら、同じ条件のPostgreSQLを入れなおして そのフォルダをpg_dump等でダンプしてテキストファイルに落とせば 任意のPostgreSQLに入れなおしできる
279 :
277 :2005/12/21(水) 21:57:59 ID:???
>>278 CPUもOSも変えてしまいました・・・
いったん同じ環境用意してやるしか方法ないですかね?
とりあえず、同じバージョンの postgresql 入れて、 フォルダをコピーしてみろ。 linux だといける。 win はしらんが、でもたぶんいけるだろ。
281 :
277 :2005/12/21(水) 23:01:07 ID:???
サービスをとめてPostgreSQLフォルダをコピペしてみましたがサービスを再起動しようとすると落ちてしまいダメでした どこか設定ないか調べてみます・・・
先にコピーしてから、インストールするんだよ〜。
283 :
277 :2005/12/21(水) 23:16:01 ID:???
>>282 やってみます!
先にPostgreSQLフォルダごとインストールフォルダに突っ込んで
上からインストールすればいいんですよね?
284 :
277 :2005/12/21(水) 23:50:19 ID:???
できました インストール途中一回質問が増えたけどそれ以外は問題なくインストールできました ありがとうございます
286 :
NAME 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 で検索しても情報がなく どのように対処すればいいのかわかりません
どうなった?
解決しますた
Windows環境で テーブル空間を任意で作成するにはどうすんだ?
ん?TABLESPACEのこと? 非Windowsと同じやりかたでできるけど。 path指定が、'C:\\foo\\bar' みたいになるけどな。
>291 ありがと。 バックスラッシュはエスケープってことか。 ついでに自爆、ディレクトリのセキュリティ設定でひっかかって。。。。orz
'C:\\foo\\bar' で実験したら、中身は C:/foo/bar って入ってるな。 もしかしたらどちらでもいけるのかも。 ドライブ名はどうなるかなあ
294 :
NAME IS NULL :2006/02/17(金) 11:59:02 ID:72xXMt8e
8.0から8.1へアップデートする方法を教えて下さい。windows 2000 serverです。
Win版に限らないけど、 pg_dumpall > filename サービスの停止 8.1のインストール initdb 起動 psql < filename の手順でできます。
296 :
NAME IS NULL :2006/02/17(金) 15:19:43 ID:72xXMt8e
8.0のpgadminVでバックアップとって8.1のpgadminVでリストアしても同じになりますか?
まったく同じじゃないけど、DBごとに個別に取って、新しいほうで作成してリストアすれば ほぼ同じかな。ユーザーとかTABLESPACEとかは手作業でやるのなら。
8.1.3でたな
300 :
NAME IS NULL :2006/02/22(水) 17:54:07 ID:A0xJBZ7m
こんばんわ。色々ありがとうございます。 8.0→8.1へのアップデートですか、pgadminVでバックアップとってリストアしたら 出来た様子です。 リストア中に色々メッセージが出てきたのですが、8.1のデータベースの内容が8.0と同じに なったのでよしとします。
IDENTITYが使えないみたいですが 代わりになる機能ってあります?
SEQUENCE かな。 CREATE TABLE 時には SERIAL を指定すればいい。
304 :
NAME IS NULL :2006/03/18(土) 21:13:31 ID:sa7ItIyD
adminVに接続できません。サービスの開始をしたのですが、 「指導的ヒントーサーバーは閉じています。」となってしまいます。 初心者で申し訳ありませんが、どうか、解決策を教えてください。
それだけだと原因はいくつか考えられるけど、 試しにサーバ名をlocalhostでやってみるとどうなる?
306 :
NAME IS NULL :2006/03/21(火) 20:51:49 ID:TsAQfPS2
それでも、だめでした。一度、再インストールして起動できたのですが、 一日たつと、また「サーバーの接続に失敗しました」で「指導的ヒントーサーバーは閉じています。」 と出てしまいます。
情報が少なすぎるんだって localhostでOKならpg_hba.confかpostgresql.confだし ダメならファイヤーウォールかサーバー起動してない と言えるが、前はつながった、とかじゃそれも言えない つながった時から何も変えてないんだよな? まずサービス動いてるか確認してくれ
308 :
NAME IS NULL :2006/03/22(水) 23:21:37 ID:Io+T3q8U
サービスは「サービスの開始」で完了にはなります。 何が原因なのかほんとさっぱりで。
309 :
NAME IS NULL :2006/03/22(水) 23:37:47 ID:XOjDI7em
マイコンピュータの右クリックで管理を選び、 「サービスとアプリケーション」からサービスを選び PostgreSQL Database Server X.X.X というとこを探して 状態が「開始」になってるか確認するんだよ。 netstat -a とか -an とか -aon で5432ポートでLISTENしてるか確認してもいい
311 :
NAME IS NULL :2006/03/23(木) 21:00:17 ID:1XjPFJqa
すいません、無知で。 見たら、停止になってて開始にしてもならないです。
312 :
NAME IS NULL :2006/03/23(木) 21:03:34 ID:1XjPFJqa
「起動して停止しました。パフォーマンス・ログ・警告サービスなど、 一部のサービスは作業がない場合に自動的に停止します。」と出ました。
>>311 教えて君のガイドラインでも参考にしてんのか?
君には脳みそついてるか?
検索の仕方知ってるか?
314 :
NAME IS NULL :2006/03/23(木) 22:18:54 ID:1XjPFJqa
何の検索??
とりあえず、調べるとこはいくつかあるけど めんどくさいから再インストールしたほうが・・
316 :
NAME IS NULL :2006/03/24(金) 22:50:08 ID:qWPzMu34
わかりました。 丁寧に答えていただき、ありがとうございました。
これ何て病気?
コレラ
トンコレラって今でもあるの?
320 :
NAME 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 のままで利用するしかないなぁ。。。 ベーステーブル情報っていう意味もよくわからない。。。(^^;
321 :
NAME IS NULL :2006/05/05(金) 04:38:44 ID:hFm972qW
みなさんはバックアップってどんな形でやってます? pg_dump or pg_dumpall or その他、など。 pg_dump -c と pg_dump -s の組み合わせて取っているんですが、 他にどんな運用の仕方があるかな?と思って。 Restore も実施して確認はしているのですが、本当の障害にぶち当たったことが無く、 実戦経験のある方の意見としてはどうでしょうか?
×pg_dump -s ○pg_dumpall -s でした。ごめんなさい。
323 :
NAME IS NULL :2006/05/26(金) 19:05:06 ID:4SSfJU7w
324 :
NAME IS NULL :2006/06/09(金) 14:11:05 ID:3rf6lNcE
>>320 自己レスです。
PostgreSQL 8.1.4 Windows版 でも修正されていないようです。
早く修正してくれよぉ。。。(T_T)
>>324 そう思うならここより、本家かMLかにでも投稿したほうがいいかと
>>320 >>324 貴重なフィードバックありがとうございました。
本日バグフィックスに取り掛からせていただきます。
来週リリース予定のパッチに間に合うかと思います。
>>326 ん?ほんとに関係者?
せめて、トリップつけるか名前名乗ったら?
328 :
NAME IS NULL :2006/06/12(月) 06:05:47 ID:lad+ZLVd
デグレード、すんなよ!~ヽ('ー`)ノ~ って言いたい。 デグレードくらい、早ょ、自分で気づけよっ(*´З`)
ODBCの問題では
DBファイルの場所指定ってどこ
3丁目4番13号
場所は起動時に指定するでしょうが。
東江戸川3丁目
おじゃまんが山田君かよ
ODBCの接続経路の設定ってどこでするのでしょうか? GOOGLE MAPで探したのですが、見つかりませんでした。
yahoo路線情報で出発駅と到着駅を指定してください。 さすれば、経路を表示してくれます。 ときどき遠回りな経路を選択することがありますが、 到着できないことは無いので、気にする必要はないでしょう。
337 :
NAME IS NULL :2006/07/13(木) 12:43:33 ID:MswwkVXJ
>>163 と同じ現象なのですが、%windir%\system32 にパスを通すとはどの様に
すればいいのでしょうか??教えて下さい。<(_ _)>
>>337 普通 %windir%\system32 にパスは通っていると思うけど。
cmd で echo %PATH% ってしてみ?
%windir%\system32\more.com が無いのかも?? ちなみに、 %windir% は多くの場合XPでは C:\Windows\
340 :
NAME IS NULL :2006/08/22(火) 19:20:27 ID:Nir9JARk
pgAdminVを使っているものです。 テーブルへデータを挿入したあと、Enterキーを 押すとそのつどエラーが生じます。 いったいなぜなんでしょう?初心者ですみません。ご教授ください。
どういうエラーよ エンターをどこで押したかによるけど 次のレコードにカーソルが移動してて、そこに空のレコード入れようとしたとかじゃないのかな
342 :
NAME IS NULL :2006/08/22(火) 20:38:03 ID:k5T9Sk6n
Fedora 5 とPostgreSQL8.1.4を使用しています。 とあるアプリを入れようとすると、libpq.so.3が見つからないと叱られます。 ネットを適当に検索すると、libpq.so.3は7.4系列でないとインストールされないというレスもあるのですが、本当でしょうか?
>>342 8.1.0 には3.1があるみたいだけど、8.1.2では4.0になってるみたいだな。
PG_HOME/lib はどうなってんの?
344 :
NAME IS NULL :2006/08/23(水) 10:11:01 ID:ailSN2Wm
>>341 エラーが起こりました:
ERROR: array value must start with "{" or dimesion information
というエラーです。
>>344 それは配列型のカラムがあるんじゃない?
配列方の入力は、{} で囲む。
{1,2,3} とか {'a','b'} とか。項目1つでも必要
346 :
NAME IS NULL :2006/08/23(水) 11:23:50 ID:ailSN2Wm
◎部署表 レコード挿入時エラーなし ×社員表 レコード挿入時エラーあり(改行できない)
347 :
NAME IS NULL :2006/08/23(水) 11:56:54 ID:ailSN2Wm
社員表レコード構成 社員コード int4 社員名 text 部署コード int4 朝礼担当日 date どれが配列型でしょうか?
>>347 配列は、後ろに [] がついてるはずだが、、、(int4[] とか text[] とか)
もしかしてバージョンの違いとかでおかしくなってる?
349 :
NAME IS NULL :2006/08/23(水) 12:41:20 ID:ailSN2Wm
探してみます。
350 :
NAME IS NULL :2006/08/23(水) 12:43:02 ID:ailSN2Wm
date型が配列でした。
351 :
NAME IS NULL :2006/08/23(水) 12:45:55 ID:ailSN2Wm
良かったです。ご指摘の通り、date[]型の列に
{2006/02/12}と入力したら{2006-02-12}で格納できました。
改行も出来ました。ありがとうございます。
>>348
352 :
NAME IS NULL :2006/08/23(水) 13:15:46 ID:m1i6bZ4E
>>343 8.1.0をsrcよりbuildしてみたけど、libpq.so.3では無く、libpq.so.4になったましたです。
とあるアプリをldd で見ると直接 libpq.so.3.0 を見てるの? リンク貼ってごまかせんかな
>>353 そうですね。
「libpq.so.3 => not found」と表示されます。
どこかから適当にlibpq.so.3を引っ張ってきて、PG_HOME/libに放り込むというのは,,,ダメなのでしょうか。
コンパイルできるなら、7.4.Xをコンパイルしてlibだけもってったら? 7.X と8.0、8.0.Xと 8.1.X はかなりかわってるので、元ソフトをなんとかしたほうがいいような
>>355 了解です。その方向で攻めてみます。
でも、そのソフトは8.1.Xで動くらしいのですよ。
いい加減な作り方をしたのかなぁ...?
357 :
NAME IS NULL :2006/08/26(土) 17:10:28 ID:dqbcAN+3
クライアント側はネイティブのX86-64の64ビットソフトウエアで動かすことは できますか? 最近Postgreに浮気しようかと考えています
クライアントとは、具体的にどれのことを言ってるの?
8.1.3について、質問させてください。 「PostgreSQLの構築時、スレッドセーフは有効にして下さい。」 との指示を受けたのですが、いまいち該当する文書が見つかりません。 これはいったい何をせよということでしょうか。
>>359 構築ってコンパイルのことでしょ?
configure のオプションに入れる
--enable-thread-safety の事じゃないのかな?
>>360 なるほど。そういうオプションがあるのか。ありがとうございます。やってみます。
つか、DBなんてそもそもスレッドセーフなのかと思ってました。
ここでスレッドセーフになるのはクライアント用のライブラリ類だからねえ 過去の互換性でこうなってるのかもね。
363 :
NAME 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のブラウザで表示させようとするとどうしても 文字化けします。 いったいどうしたらよいでしょうか?
>>363 文字化けしないようにしたらいいよ
いらないことばっかり書いて情報すくなすぎ
DBの文字コードは何になってんの?
DBに格納されてるときのデータはよめてるの?
エンコード・でコードしてもだめ?
365 :
NAME IS NULL :2006/08/29(火) 01:19:28 ID:7wbP8C3M
>>364 DB文字コード=UNICODE
DB文字コード=EUC-JP
(どちらでも以下を試しました)
1
mb_convert_encoding($変数,"EUC-JP","SJIS");
2
mb_convert_encoding($変数,"EUC-JP","UTF-8");
3
なにもしない→文字化け
1
mb_convert_encoding($変数,"EUC-JP","SJIS");
2
mb_convert_encoding($変数,"SJIS","UTF-8");
3
mb_convert_encoding($変数,"SJIS","EUC-JP");
postgreSQL.confの内容
client_encoding = euc-jp ハイフンをアンダーバーに変えても試した。
それと、pgAdminばかり利用していてDOS上から接続する方法がわかりません。
どうか教えてくれたらと思っています。
>>365 pgadminで、テーブルのぞいてみた?
ちゃんと文字化けせずに格納されてる?
367 :
NAME IS NULL :2006/08/29(火) 10:01:52 ID:aTAQZsLR
>>366 格納されてます。
psqlでも格納してみたんですが、どちらも
ちゃんと文字化けせずにDBに格納されてます。
時間かかるけど、表を作って確認してみます。
368 :
367 :2006/08/29(火) 15:56:28 ID:aTAQZsLR
ブラウザでEUCエンコードすると、ちゃんと日本語で表示されます。
370 :
NAME IS NULL :2006/08/30(水) 16:30:04 ID:LNqquF8S
pgAdminで起動すると C:\Documents and Settings\xxx\Application Data\postgresql\pgpass.conf' をオープンできません (エラー 3: 指定されたパスが見つかりません。) て出るんだけど、解決法を教えてください。 CじゃなくてDに入れているのですが・・・
DドライブにDocuments and Settingsを作ってそれに変更して使ってるってこと? インストールしてから移動したのなら入れなおせばいけるかと
PostgreSQLで「大文字小文字を区別してスキーマを作成してくれ」との指示をうけました。 SQLを試してみたところ、大文字小文字の区別をされないようだと思ったのですが、pgAdmin IIIのGUI「新しいスキーマ」を作成すると、 「Foo」と「foo」を作成することが出来ました。 これは、これでいいのでしょうか? もう少しスマートなやり方をご存じのかた、教えてください。
>>372 他のスレで書いた気がするが、バックエンドを経由するときに統一される。
区別させたいなら "" でくくる。
pgAdminIIIは、一部それをやってくれる。
>>373 おおお。ありがとうございます。
勉強になりました。
375 :
372 :2006/08/31(木) 22:59:40 ID:???
文字コード:UTF-8のPostgresに検索をかける簡単なウェブアプリを作ろうと思うのですが、やはり親和性が高いのはPHPになるのでしょうか。
親和性とかより、自分の使いやすいやつで選べばいいのでは。 1から覚えるならPHPもありかもしれないが。
C#やPythonは使ったことがあるんだけど、Web系はさっぱりなのです。 文法的にはJavaが一番取っつきやすそうだけど、大仰かつリソース食いな雰囲気があるし...。 関係ないけどNpgSQLの配布サイトがつながんネ('A`)
それならたしかにjavaはとっつきやすそう。 CっぽいPHPもそんなに困らないかもしれない。 まあどれ使うにしても慣れないと環境作るまでが大変だけど。
380 :
NAME IS NULL :2006/09/03(日) 19:22:30 ID:IFPR3xSl
既知の致命的バグを教えて
直してくれるんだよ。
よほどのことが無い限り、致命的バグが明らかにした時点で対策は取られてるけどね...。
384 :
NAME 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') よろしく、よろしくおねがいいたします。
'1970/01/01 09:00:00'::TIMESTAMP + '秒 SEC'::INTERVAL とかでどう?
386 :
385 :2006/09/13(水) 18:30:56 ID:???
って、to_timestamp() ならそのままだった SELECT to_timestamp(SECOND) FROM ・・・ でOK
387 :
385 :2006/09/13(水) 18:43:30 ID:???
上の例だと、項目名か。 SELECT to_timestamp(項目名) AT TIME ZONE 'GMT' ・・・ みたいにタイムゾーンは替えることができます。
>>385-387 ありがとうございます。明日出勤したら試してみます。
定時退社するとビールが美味いです。
389 :
NAME IS NULL :2006/09/14(木) 10:45:03 ID:GsHXk29u
>to_timestamp(項目名) AT TIME ZONE 'GMT-9:00' これで、どうやら正しい値を表示する事ができました。ありがとうございました。 --日本のタイムゾーンはこれでいいんだよね...。 疑問なのですが、この書式には'1970/01/01 09:00:00'が何故含まれていないのでしょうか。
to_timestamp() の仕様が、UNIX時刻からTIMESTAMPを返す、という関数だから。 UNIX時刻とは、1970-01-01 00:00:00GMT からの経過秒のこと。 日本時間だと、1970-01-01 09:00:00JST ですね。 デフォルトがこうなってるなら、タイムゾーン指定無くても-9時間になりますよ。
>>390 ありがとうございます。実に勉強になりました。
そうか、根拠の無い定数値ではなかったんだ。。 恥ずかしス
392 :
NAME IS NULL :2006/09/21(木) 11:14:02 ID:EUAu1HPF
Delphi6〜2006 で PostgreSQL8を使っている人ありませんか? どんなコンポーネントを使うのが、いいのでしょうか?
393 :
NAME IS NULL :2006/09/27(水) 11:41:11 ID:LTQRh5dB
質問させてくださいな。 データベースファイルの場所を指定して、さらにデフォルトのport以外で接続するようにしたいと考えています。 新規作成する場合はcreatedbのオプションを指定するだけで、特にpostgresql.conf等の設定は必要ないのでしょうか。 また、接続ポートを変更する事でありがちな「困ること」ってありますか?
>>393 createdb のオプションはすでに起動しているPostgreSQLのポート指定ですよ。
そしてそのポートは、postgresql.confで設定するんですよ。
変えて困ることは特に無いですね。デフォルトを前提にしてるやつがいなければ。
>>394 レスありがとうございます。参考になりました。
なんか自分いろいろ混同してるみたいなので、マニュアルもいちど読んできます。
ポート変えたければ、initdb でpgdataの場所を変えてやって その場所にあるpostgresql.confのポートを変えればいいよ 当然、pg_ctl で複数起動する必要がある
今あるポートを残したまま、別のポート使いたいんだと思ったので 複数と書いた。
>>398 あ、違います。
デフォの5432を塞いで、別のポートで通信を行おうとしているのです。
400 :
908 :2006/09/27(水) 21:41:11 ID:???
>>396 補足。その場合には-Dでクラスタの所在を指定すること。
401 :
NAME IS NULL :2006/09/29(金) 18:24:40 ID:l4uDq3y5
402 :
NAME IS NULL :2006/10/06(金) 13:37:50 ID:FCgsBt/i
重複キーが発生すると、 インサートがまるっきり出来ないんですね。 知らなかった。 ショック大。
もしまったくの別データなのであれば、デュプリケートありにしとけばいいのでは プライマリだと無理だが
404 :
NAME IS NULL :2006/10/06(金) 16:24:14 ID:FCgsBt/i
ACCESSからの移行なので、 SQLサーバーEXPRESSにしようと思っていたのですが、 フリーならPOSTGREが良いとソフト屋さんが言うので、 いろいろ検証してて今日わかったのです。 SQLにした方が無難そう。
デュプリケートキーありの設定をしないでINSERTできるDBなんて無いと思うんだが? SQLサーバーで同じ目にあうぞ
406 :
NAME IS NULL :2006/10/06(金) 18:47:17 ID:FCgsBt/i
インサート出来ないのはキーが重複しているデータで、 それ以外のデータは受け入れて欲しいのです。 MSDEとかでテストしていたときは、 そこら辺の動きが、 ACCESSと同じだったと思うのですが、 POSTGREだと、 重複しているデータもしていないデータもまとめて、 何も入らなかったので、 驚いただけです。 おまけに止まってしまうし。 でも使い方に慣れていないせいもあると思いますので、 もう少し研究します。 ご指導、 ありがとうございました。
auto commitを理解できていないような気がする。
408 :
NAME IS NULL :2006/10/08(日) 08:14:37 ID:Xqm4zc5y
auto commit?
>>407 至急調べて勉強します。
ありがとうございました。
>>402 はどうやってINSERTしたの
トランザクション内でなら当然全てキャンセルされる。
PostgresってDBのクラスタリングできる??
クラスタリングって何が向上するの?信頼性だけ? HDDでいうとこのRADE1とかと同じ感じ?
>>RADE1 >>RADE1 >>RADE1 >>RADE1 >>RADE1 >>RADE1 >>RADE1 >>RADE1 >>RADE1 >>RADE1
じゃあRAID1。つづりぐらいどうでもええやろ。
415 :
NAME IS NULL :2006/10/12(木) 16:16:14 ID:JlXlSYD0
>>409 402です。
ACCESSのリンクテーブルを使って、
伝票番号の範囲を1000枚ずつ区切ってクエリーで追加しようとしました。
途中でエラーになったので、
オリジナルのデータを調べたら、
変な文字が商品名のところに見つかって、
その文字をオリジナルから削除して再挑戦しました。
ある程度追加が終わったテーブルですから、
最初っから実行すれば当然重複キーが出ます。
以上です。
416 :
NAME IS NULL :2006/10/12(木) 16:19:16 ID:JlXlSYD0
402です。 ACCESSのデータを一件ずつ取り出して、 POSTGRE側のデータをキーチェックして、 存在してなければ一件だけ書き込むという風に変えました。 今実行中で、 一応動いてます。 ちょっと遅い。
それがオートコミットだろ 明示的にトランザクションにして全キャンセルさせたほうがよかったね
418 :
NAME 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のクエリ実行の「.........」が、 高速でちかちかしてますので。 もうちょっと、 考えて見ます。
419 :
NAME IS NULL :2006/10/12(木) 17:03:15 ID:2aaHHgPh
なんでpostgreSQL7.1.2がREDHATのES3にインストールできないんじゃ〜 なんでじゃ〜なんでじゃ〜なんでやねん
できるでそ。
なぜそんな骨董品を
422 :
NAME 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なら入るのに・・・
骨董品といわれても仕様なので・・・
>>419 多分スレ違いw
ここは8専用でふ。なんで別なのかは知らないけど。
エラーの内容を書いてくれれば解決できると思うけど スレ違いならよそでやってるのかな
そもそもなんで別れてるんだろうね。 pgスレはいっぱいあって、一見さんにはちょっと辛いかな。 2.0Betaとかは別スレで話題になってるし。
427 :
NAME 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 …」 何かヒントをいただけませんか?
ヒント:マニュアル嫁
429 :
NAME IS NULL :2006/10/21(土) 18:37:42 ID:X+FkhGh4
読んで解決出来ないんでヒントを求めてる訳だが・・・
>>427 単なるIPアドレスの入力間違いじゃね?「192.168.10」て。
192.168.1.24 から許可したのに、192.168.10 て何だ
432 :
NAME 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 」
だす…
>>432 "192.168.1.24:5432postgres" の後ろのpostgresは何よ
434 :
433 :2006/10/23(月) 16:16:27 ID:???
そのエラーメッセージがあってるのならば、php 側のソースがおかしい。
435 :
NAME 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.」
192.168.1.24:5432・・・
437 :
NAME IS NULL :2006/10/23(月) 16:42:18 ID:7g/UfwDX
途中で送信してしまいました。すみません phpもrdbも素人なんで的外れな事言ってたらすみません
くっつけるのはjdbcかなにかのクセか? host=192.168.1.24 port=5432 dbname=・・・
439 :
NAME IS NULL :2006/10/23(月) 18:09:52 ID:7g/UfwDX
>>438 ありがとうございました。
無事接続出来ました。
書式は、どっかのサイトで拾ったサンプルだったんで・・・(^^ゞ
もっと精進します
>>438 でもでも、半角空白をデリミタにしちゃうのはちょっと気持ちが悪いな。
素人意見だけど。
441 :
NAME IS NULL :2006/10/30(月) 17:00:21 ID:Oa4WHqKk
8.1ダウンロードする際の、 データベースクラスタの初期化の画面で、 アドレス(すべてのアドレスでコネクションを受け入れる ただのlocalhostでなく) ってやつにはチェック入れるべきなんでしょうか?
ダウンロードって? Windows版か何かでDB初期化するのかな。 どう使うかによるでしょ。 あとでconfいじってもなおせるから適当で。
443 :
NAME IS NULL :2006/10/30(月) 17:54:28 ID:Oa4WHqKk
どこかにいいダウンロード入門サイトなる超初心者サイトはないでしょうか・・・ なんかダウンロードの際の入力項目が、いままで使ってたアプリに比べて、異常に多いです。 javaとかだと、初心者サイトで、ダウンロードのフォローもしてくれてるところあったのですが。 ググッたのですが、うまく見つけれません
ダウンロードの定義を教えてくれないか。 何のことだかさっぱりわからない。 インストールのこと?
>>441 もし
>>444 が言う様にインストールの事なら、そのチェックは必要無いよ
設定は後でも変更出来るから
的外れだったらゴメン
446 :
441 443 :2006/10/31(火) 05:31:59 ID:i6ugXll1
>>444 >>445 低レベルな質問にお答えいただきありがとうございます。
インストールしようとしたのです。
443に書いたように、インストール時に、あんなに設定しなきゃいけないものを使うのは初めてだったもので。
今までにもあったかもしれませんが、初心者サイトで、そのままやってました。
今回は初心者サイトが見つからなかったので、本屋で入門書を見てきました。
>>445 ありがとうございます。本にもそのように書いてました。
とりあえずインストールしてみます。
本は買おうと思ったのですが、た、高いんですね・・・ 手が出なかったです
>>446 まあ基本的には安全のためだね。
誰でもアクセスできる状態を気づかずに作ってしまうと面倒だからね
>>446 余計な事かもしれませんが、質問する時は動作環境くらい書いた方が良いよ
特にインストール関連だと、WindowsとLinuxでまるで違うからね
>>448 ここ、スレタイでWindowsってでかでかと書いてあるから
Windows専門なのかと思う人が多いとは思う
_, ._ ( ゚ Д゚) ( つ旦O と_)_) _, ._ ( ゚ Д゚) ガシャ ( つ O. __ と_)_) (__()、;.o:。 ゚*・:.。
専門スレとは思わないだろけど、、、 しかしなんつーかWindows....いや ODBCとは相性悪いのぅ・・・ ODBC経由の良品ツールはほとんどスカスカのmysql用。 postgreは個人的に付き合いも長いし、DBとしても使いやすいが 一からWindowsで設計をやろうとするとどのツールも 帯に短し襷に(ry になっちまうのが残念だ。 clay core/DBDesigner4/Enterprise Architecture/SI ER すべてpostgreだとどっかで制限が掛かる or 使用不可。
けっこう同意だが、postgreという書き方は同意できんw
>>451 そんなあなたに、EMS SQL Management Studio for PostgreSQL
>>452 すまんおれは昔からだから、postgresと書くんだが、
最近postgresってなんすかーといカギが多くてな
greで止めるなって突っこんでんだろ ところで初代gresってどんなDB?
457 :
NAME IS NULL :2006/11/11(土) 14:35:07 ID:iC3ZS8DG
インストールで、データベースクラスタの初期化ってところで詰まってます。 データベースクラスタの初期化 チェックが入ってる ポート番号 5432 アドレス チェックが入ってない ロケール C エンコーディング EUC_JP スーパーユーザ名 postgres パスワードだけ自分で設定して、あとは初期値のままでいいのでしょうか? 3000円も出して分厚い本買ってきたのに、ここについて詳しく書いてないです。
>>457 基本的には何も考えずに進んでも大丈夫だと思うよ
大概の事は後から変更出来る
日本語を扱いたいならロケールは「C」のまま変更しない方が
良いらしいよ
459 :
457 :2006/11/12(日) 01:05:16 ID:D0ykjlI7
>>458 レス感謝します。
変更が聞くなら、初期値のままで進んでみます。
ありがとうございました。
SQL Serverから乗り換える利点ってありますか?
465 :
NAME IS NULL :2006/12/02(土) 15:12:26 ID:rfS7Dolc
なんでか突然 listen しなくなった。。。 エラーメッセージも出てないし
467 :
NAME IS NULL :2006/12/02(土) 21:38:08 ID:rfS7Dolc
468 :
NAME IS NULL :2006/12/04(月) 11:40:44 ID:cYQQ9FVU
Admin権限で起動する方法ってありませんか?
Admin権限で起動って、rootで動かせないかってこと? なんで?ポート1024以下を使うつもりなのかな
Administratorsグループのことかと
同じ事では。 わざわざそういうことできないようにしてあるのに理由がわからんと 回避手段も考え付かん
472 :
NAME IS NULL :2006/12/05(火) 15:37:44 ID:X++f+GDB
理由は、Adminユーザしか見られない領域に、dataディレクトリを指定しているため。
その領域にpostgresのアクセス権設定しちゃあかんの? どうしてもやりたいなら、ソースから構築できる環境?
474 :
NAME IS NULL :2006/12/05(火) 15:45:00 ID:gso8sm/E
select した結果に一件目から1,2,3,4と番号をつけてくれるような 命令ってないでしょうか? oracleだとROWNUMとかでできるようですが・・・。
475 :
NAME IS NULL :2006/12/05(火) 16:00:00 ID:X++f+GDB
>>473 その領域は、substコマンドで作成した仮想ドライブで、そのユーザしか見られなくて。。。
手段はソース変更のみってこと?
476 :
NAME IS NULL :2006/12/05(火) 16:04:54 ID:X++f+GDB
もう一つ書き忘れたので追加。 やりたいことは、PostgreSQLの環境まるごとをUSBメモリなんかに入れて 持ち運びたいので、インストールなしで起動したいってことなんです。 だからできればpostgresユーザも作りたくない。
それPostgreSQL以外でも可能? まあサービスにしないでファイルもエブリワンにしとけばいけるのかな? USBに置くならSQLiteあたりでええんでないの?
8.2.0が出たんで早速入れてみたけど、 pg_restoreでエラーが出るようになったぞ 8.1.5だと復元できるのに。うーんなんだこれ
どういうエラー? EUCの文字コードエラーってのは最近の版で出るようになったな
>>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データを使ってる。
これは一体なんだろ・・・
すいません。 あの、低次元なこと聞くかもしれないのですが、最近webな会社に入ってpostgresを扱うようになったんですが、timestamp型にCURRENT_TIMESTAMPするとμ秒まで入ってしまいますよね? なのにテーブルの仕様にtimestamp(0)と書かれたのを見たことがないのですが何故なんでしょうか・・・。
昔のDATETIME型から移行したままだからじゃないの
精度まで指定するケースってあまり見たことない。 というかあえて精度を悪くする理由がよくわからないんだけど
484 :
481 :2006/12/08(金) 07:13:35 ID:???
レス遅くなってすみません。
>>483 やっぱりそれが普通なんですか。
ググッてもtimestamp(0)ってやってるの出てこなかったし。。
でもそうなると表示する際いちいちμ秒削らなきゃいけないですよね?
それはやはり暗黙了解見たいな感じなんでしょうか。
int4型で格納している秒数を、interval型(?ようはhh:mm:ssのように表示したい)に変換してくれる関数はありますか?
>>485 SELECT (10000 || ' seconds')::interval;
8.2に移行された方、はやくなりましたか? 上の方でうまくdumpが取り込めないという報告がありましたが、 その後どうだったのでしょうか。
489 :
NAME IS NULL :2006/12/14(木) 01:10:50 ID:6qMOtelV
Win版のレプリケーションはないのですか?
Slony-I のWindows版が出るはず
質問です。 Postgres 7.4.8から8.1.5にバージョンアップ後、 phpMyAdmin4.0.1やpgAdmin3 1.6.1から編集できないテーブルが出来ました。 phpMyAdminの場合は操作一覧(編集/削除)、pgAdmin3の場合はクリックしても無反応。 7.4.8の頃は全てのテーブルで編集も削除できていました。 出来るものと出来ないものの違いはINDEXがあるかないかくらいです。 ちなみにSQLレベルではINSERT/UPDATE/DELETE可能です。 こんな現象になった人はいませんでしょうか?
phpMyAdmin?
493 :
491 :2006/12/16(土) 20:29:57 ID:???
>>492 すまそ。phpPgAdminです。
8.1以降OIDがデフォルトで生成されなくなったのですね。
どうやらそのせいのようです。キーをちゃんと指定しろってことですね。
失礼しました。
ストアドプロシージャはひとつのトランザクション中で実行されるようですが autocommitのON・OFFにかかわらずそうなのでしょうか? それともautocommitがONの場合には、ストアドプロシージャ中のSQL文が実行されるたびにコミットされているのでしょうか?
495 :
NAME 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 | としました。
496 :
NAME 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(); } } } を実行すると、
497 :
NAME 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' とか
>>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
500 :
495 :2006/12/18(月) 03:55:50 ID:???
>>499 ありがとうございました。参考に致します。
助かりますた。
>>498 もありがとうね。イッショニガンバロー
501 :
495 :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)
となりました。
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
/99
99ってどっから出てきたんだw 1台だけなら 32 、クラスCのアドレス全部なら 24 で
192.168.1.93(クライアント)からアクセスするので/99ぐらいにしておきました。 ネットワークのことが良くわかっていないみたいで、申し訳ないです。
506 :
502 :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
/24はユーザー名の間違いでした。どうもすみませんでした。 ちなみに/32のエラーはどういった理由なのか、一応知りたいのですが、お願いできますでしょうか?
>>506 えっとだな、192.168.1.1〜192.168.1.254 までの許可なら192.168.1.0/24 でいいよ
1台だけ許可するなら、 192.168.1.2/32 な
で、postgresql というユーザーは作ってあるの?
デフォルトの管理者は、postgres だと思うよ
まあ管理者アカウントは使わないほうがいいが
とりあえず動かすなら、postgres にしてみ
遅かった。 /32 は、たぶん 192.168.1.0/32 とやったんだろう これだと 192.168.1.2 は含まれないから単にはじかれただけ。
っと、192.168.1.93 だったね
>>510 ご親切にありがとうございます。
お察しの通り192.168.1.0/32とやっておりました。
192.168.1.93が含まれずにはじかれた、ということですね。
お手数かけてすみませんでした。
大変勉強になりました。ありがとうございました。
512 :
NAME IS NULL :2006/12/22(金) 00:53:26 ID:k4k2FTfM
>>490 Slony-I のWindows版が早くリリースされることを期待しています。
PostgreSQL8でDBの文字コードにShiftJISって使えないの?
内部コードでは使えません クライアントエンコーディングには設定できるので、使い勝手は問題ないです
515 :
NAME 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.のようにログインできてしまいます。
516 :
NAME IS NULL :2006/12/28(木) 08:45:04 ID:1MAdQIZd
>>515 使ったことないから知らないけど、普通に考えたら
「パスワード入力後にレスポンスが返ってくるまで」の
タイムアウトじゃないの?
むしろどうして3.のタイムアウトだと思ったのかを教えてほしい。
つーか、そこで60秒待たせてるのはpsqlであってサーバじゃないからじゃないの?
>>515 psqlは接続要求したときにパスワードを求められたら、一旦接続解除。
psqlがPassword:プロンプトを出して、入力後に再度接続要求を出してる。
521 :
515 :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でやってた方法じゃうまくいかないのだね。
522 :
NAME IS NULL :2007/01/08(月) 13:18:11 ID:MGKZA6gM
Windows XP HomeEdition に8.2を入れ、新しいデータベースを作成したのですが、 pgAdminからバックアップ/リストアができません。 8.1の時は、作成したデータベース->[右クリ]にバックアップ/リストアの メニューがありましたが、8.2では[ツール]にバックアップ/リストアが あり、常に選択不可になっています。 どなたかご教授いただけると幸いです。
権限無いんじゃないの? 普通に右クリックのメニューでもツールでも使えてるけど
って今確認するために入れたんで 8.2.1 でした、一応
525 :
NAME IS NULL :2007/01/08(月) 22:44:30 ID:Cby+pvUG
>>523 ありがとうございます。
@net user postgres /delete で古いアカウントを消す
AAdministratorsグループのユーザでinstall
Bサービスアカウント postgres -> 自動作成
CDBのスーパーユーザ postgres
上記の手順でやっています。
コマンドでpg_restoreなら問題なくできました。不思議です。
こういう場合、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をつかいませう だそうです
528 :
NAME IS NULL :2007/01/10(水) 07:05:55 ID:ZM1Em5ev
内部アカウント検索に失敗しました: アカウント名とセキュリティIDの間の マッピングは実行されませんとでるが 何が原因なんでしょうか? WinXPpro セキュリティ avast
内部アカウントを列挙する権限がないとか?
530 :
NAME IS NULL :2007/01/12(金) 21:31:04 ID:b0W6bgat
windowsってパーミッションデネードとか出ないの?
出るけど?
532 :
NAME 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 で接続できません。何が足りないのでしょうか?
GRANT に CONNECT ってあったっけ。 接続制御はpg_hba.confでやるから無いんじゃないかな。
windows2000ProSP4のサーバ用デスクトップ1台とクライアント用ノートPC2台に postgresql-8.2-ja.msiからインストールしてみたのですが、クライアント用の ノートPC1台にODBCドライバがインストールされません。(インストール動作は正常に 終了するのですが。) もう一台のノートにはpostgreSQL ODBCドライバは インストール出来ていて、サーバ用のデスクトップ機もドライバは確認できます。 インストール可能であった2台は最近OSを入れ直したものです。どのマシンも windowsアップデートはしてあります。 何か理由があるのでしょうか?? 詳しい方アドバイス頂けませんか?
adminじゃないとか?
536 :
ココ電球(∩T∀T) ◆tIS/.aX84. :2007/02/01(木) 18:47:49 ID:BE/MXAwv
データベース無いとか
レス有難うございます。 Administrator権限でインストールしました。 ODBCドライバがインストール出来た・出来なかった、どちらのノートPCからも pgAdminからだとサーバのデータベースにアクセス可能です。 なので データベースがないわけでもありません。 う〜ん。
538 :
ココ電球(∩T∀T) ◆tIS/.aX84. :2007/02/02(金) 00:07:56 ID:htSkYdhW
admin権限で入ってインストールした?
Windows版にはコマンドプロンプトからの createuser はないんだっけ?
あるよ
541 :
534 :2007/02/02(金) 22:17:47 ID:???
>>538 レス有難うございます。
「Administrator」でWindows2000にログインしてpostgresqlをインストールしました。
同じWin2000proSP4でもODBCドライバがインストール不可能な場合があるんです・・・
「コントロールパネル」→「管理ツール」→「データソース(ODBC)」→「・・・DSN」で
PostgreSQLドライバが追加できません。
542 :
534 :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
いえいえ私も 大変参考になりました。
psql で \d t1 とすると t1 のカラムとその型が分かりますが、 t1 に 100 以上カラムがあり、その中から c50 というカラムの 情報だけ見る方法はないでしょうか。
>>544 pg_class,pg_attribute,pg_typeでもselectしてくれ。
>>544 やはり簡単に知る方法はないんですね。
# \d t1 c50
c50 | interger | default 0
とか
#\d t1 c5*
c50 | interger | default 0
c51 | text |
とか見ることができれば最高ですかね。
>>546 % echo '\d t1' | psql -d hogedb | grep 'c50'
>>546 システムカタログをselectするのが
簡単じゃないって言うのかwww
>>547 ありがとうございます!
echo '\d '$2 | psql -d $1 | grep $3
というスクリプトを作りました。
>>548 簡単なんですか?
システムカタログも普通のテーブル
c50だのc51だのってペースで100以上もカラム作成した本人を呼んでくるのがいいと思うよ
PostgreSQL8 は .NET Framework2.0 必須なの?
味噌汁で顔を洗って出直してきてね
なんかよくわからんが、ワラタ
メモ、メモ、 日本語のユーザー名でWindowsにログインしている 状態で、pgadmin1.6.2をインストールして実行しようと すると、 C:\Documents and Settings\xxx\Application Data\postgresql\pgpass.conf がありまへーんって言われます。 適当なユーザー名(日本語含まず)でログインしなおして pgpass.confをコピーしたら動きました。
ユーザ定義関数内の実行プラン見たいんだけど…
558 :
NAME IS NULL :2007/03/22(木) 00:57:57 ID:aRIeHmyL
あのさぁ、8.2.0でWORK_MEMを100MBぐらいとると、大量のデータをSELECTしたら、 際限なくメモリを確保しようとするんだ…。 8.2.1の環境もあって、こっちも同じような動きをしてスワップしまくり…。 orz 80MBぐらいにすると期待したとおりのメモリ使用量なんだが、何でですかね…。
とりあえず、味噌汁で
教えてください。(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 の同じ動作ような動作になっています。 どこか間違っている、または足りないことがあると思うのですが分かりません。
samerole は samegroup から名前が変わっただけで機能は同じみたいですよ。 この場合、test2グループを作って、そこのメンバにtestをいれてやらないとなりませんね。
562 :
560 :2007/03/27(火) 14:15:40 ID:???
>>561 分かりやすいご説明ありがとうございました。
マニュアルに書かれている通り、pg_hba.conf はホスト制限や
パスワード形式のみの設定に留めておき、
個々のデータベースに関しては、その都度 CONNECT 権限で設定してみようと思います。
TBクラスのDBにVACUUM FULLをしたいんだけど、どんくらいかかるかなぁ…。 一応、毎晩各テーブルにはVACUUM ANALYZE してるんだけど。 SCSIのスマートアレイ接続でLinux ext3fs。
バージョンは8.2.3なの。
UPDATE頻度によるんじゃね
566 :
560 :2007/03/30(金) 20:42:05 ID:???
こんばんは、また教えてください。(v8.2.3) データベースのアクセス権限を確認できるコマンドはありますか? テーブルは \z で簡単に確認できるようですが、色々調べてみて pg_database を除いてみることくらいしか現状分かっていません。
567 :
NAME IS NULL :2007/03/31(土) 00:14:25 ID:1yUfpQQS
select * from pg_user; ?
すれ違いだったら指摘頼んます 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のコードの問題ではないのではないか?と思いこちらに投稿させていただきました。 もしなにか情報をご存知の方はお教え願えませんか?
多分バージョン違いではないかと PostgreSQLはどのバージョンをお使いですか?
レスありがとうございます。
>>569 Postgresの接続先バージョンは8.2です。
確かOLEDBドライバは7.1X以前はサポートしてなかったと記憶しているんですが、もしかして逆だったんでしょうか?
んじゃOleDbConnectionに渡す文字列が違うんじゃない? どこから持ってきたのかな、もしかして別のRDBMS?
とりあえず
接続情報として
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;"
>>572 OLE DB のとこはUser ID=myUsername; ってなってるけど。
UidってODBCじゃないの?
>>573 うわぁ・・・・・・
本当にごめんなさい
ほんとうだ・・・
なんかクセでこうなってて見落としていた様子です。
これを仰るとおりに修正したら一歩進む事ができました。
エラーだけどこのエラーは調べた時にフォーラムで見たことあったはずなんで調べてやってみます。
くだらない事でお手数おかけしました・・・・
pgpool2 の質問です。 serial 型は扱えないと聞いたのですが本当でしょうか? もしそうなら、どのようにしてユニークなキーを扱うのでしょうか? ( serial を発行する別の DB サーバを用意する? )
ずれる場合がありうるってことだよね。 シリアルが使われてるテーブルでINSERTするときは 必ずテーブルをロックすれば回避できるとは思うが
>>576-577 insert_lock という便利なオプションがあるのですね。
ありがとうございました。
初心者です。 質問なのですが、Postgresのデータベースを元に、WEBページ上のあるアイコンの表示をオンオフ、 または他のアイコンと切り替えて表示させるにはどうしたらよいのでしょうか? 漠然とした質問ですが、どなたかご教示お願いします。
>>579 「テーブルのデータの内容を判断して、
WEBページ上のあるアイコンの表示をオンオフ、
または他のアイコンと切り替えて表示させる」
サーバサイドスクリプトを記述すればいいと思うよ。
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のアイコンを表示させる感じです。
データベースとアイコン画像を結ぶスクリプトをどう記述したらよいかで悩んでいるのです。
どうかご教示お願いいたします。
アイコンってfaviconとかじゃなくて、画像データのこと? IMAGEタグのファイル名を入れ替えるんじゃだめなのか で、DB関係なくないか?
>>581 >データベースとアイコン画像を結ぶスクリプトをどう記述したらよいかで悩んでいるのです。
データや画像はどうなっているのだ?
・・・PHPスレへ
579です。
>>582 faviconではなく、gifなどの画像データです。
スレ違いでしたら、すみません。
よろしくお願いいたします。
>>584 よろしく、ということはまだここで聞くのか?
なにが聞きたいのかイマイチワカラン。
usersテーブルに画像ファイルの名前入れておく。
いや、だからPHPの話題だし、スレ違い。
588 :
NAME IS NULL :2007/04/11(水) 12:02:10 ID:7MN6WPvy
<img src="<%= k %>"> jspだけど kにDBから読み込んできたimgのurlが入ればよいのでは?
VBが目立って遅いケースはValiantを使ってる場合だな。 パフォーマンスうんぬんいうなら、option explicit / option strictは必須。 C#でもボクシング・アンボクシングを繰り返すように書けば同じように遅くなる。 クラスとか構造体とかはCLSコンパチにするためにVB6から、 めちゃくちゃ変わってて、C#と変わらんようになってるぞ。
いまさら8.1.5て。セキュリティは強化されても、バグは修正されず。
593 :
NAME 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 ってすればよいのですか?
>>593 YES. 面倒ならば テーブル名(カラム名) も省略可。単なるラッパに過ぎない。
あと、ラッパー「クラス」ってのは単語の使い方がおかしい。
>> 594 回答ありがとうございます。 ラッパークラスでなくてラッパー「スクリプト」ですね。 postgrsってvacuumの存在のせいで酷く使い勝手が悪い気がしますが、 他のDBと比べてメリットってありますか? OracleとかSQLServerなら自動的にpostgresで言う所のanalyzeを してくれますし(効果の程は知りませんが)、vacuumも必要ありません。 MySQLと比較しても両者に機能的な差はほとんど無い気がしますし・・
>>595 俺はOracle方言っぽいSQL構文がそのまま使えるとか、
Oracleにはないlimit offsetの存在だけでも使う意味があると思ってる。
あと、無償だしな。
運用中にvacuum必要なのは糞仕様だと思うがwww
今のMySQLはサブクエリとかインラインビューとか使えるのか?
>>595 autovacuum = on やってれば vacuum なんて気にならない。
postgres7 から 8 へデータベースを移転し SQLを発行したら今までにないエラーが出ました Query failed: ERROR: invalid input syntax for type double precision: "" float8でNull許可してるのにこう返されてしまいます なにか違うのでしょうか?
>>599 レスありがとうございます
バージョンは 7.4.6 から 8.1.8 です
紛れも無くそれですね orz...
空文字列とNULLがまったく同一であるというのは、Oracleだけで結構w
東京にある C# アプリで Npgsql を使って アメリカにある PostgreSQL に接続しようと思います。 この時、セキュリティ確保のために ネットワークに流れるデータを暗号化したいのですが、 どのような方法があるでしょうか?
両端をsshでポートフォワードつーのがお手軽なきがするが。
VPNが楽では?
>>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 入れ替えてみるかぁ?!
>>602 回答いくつか出てるが、
丸ごと暗号化 VPN
ポート単位で暗号化 ssh フォワード
PostgreSQLが持ってる昨日を使う SSL
607 :
602 :2007/04/18(水) 12:54:18 ID:???
>>603 ,604,606
ありがとうございます。
SSL 機能を利用してみたいと思います。
608 :
NAME IS NULL :2007/04/19(木) 00:37:01 ID:5U3UALOA
Admin権限で起動できないのは勘弁だぜ・・・
すいません、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 を実行すると上のエラーが出ます どなたか何処を見直せばいいのか教えてもらえますでしょうか?
>>610 ありがとうございます。
一回じっくりと読んでみます
>>611 じっくり読まなくても、数行で答えが。
「トリガ関数は、引数を取らない、trigger型を返す関数として宣言される必要があります」とね。
>>612 ありがとうございます。
RETURN NEW or OLD;
が抜けていた為でした。
トリガーには RETURN がいらないものと勝手に解釈しておりました。
すみません、以降マニュアルを読んでから書き込みをします。
PostgreSQL 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19
>>614 including a security fix. (CVE-2007-2138)
security-definer function は癌だな。
616 :
NAME 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って何か問題出てますか?
>>616 Unicode版のドライババージョン詳細は?
いのっち父さんの最新ドライバと入れ替えたら?(何のことか分からないなら検索)
特定のSQL文とは?
618 :
NAME 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 が出るかもしれない?ので、それまで待つかもしれません。
>>618 いや、だから、いのっち父さんとこの最新版8.2.3.1使ったらどうなる?
620 :
NAME IS NULL :2007/04/26(木) 02:09:55 ID:Oh0EKWzP
621 :
NAME 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版)を利用するかもしれません。
随時、ドライバ情報を参照させてもらいます。
ありがとうございました。
>>621 いのっち父さんのところの最新版の8.2.3.1でも出るなら
掲示板に書き込んで(バグなら)フィックスしてもらわないと
いつまでたっても直らないかもよ。
現象が再現出来るなら是非とも報告をお願い致します。
623 :
NAME 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文で、発生するようでしたら、
今度、掲示板へ報告したいと思います。
今夜はありがとうございました。
おやすみなさい。
624 :
NAME IS NULL :2007/04/26(木) 03:49:06 ID:Oh0EKWzP
補足です。 ver8.2.3の pgAdminIII でのSQL文では、エラーは出ません。
625 :
NAME 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 -- 結局寝なかった。(^^;
>>625 もうちょっと簡素な再現SQL文は見出せないの?
627 :
NAME IS NULL :2007/04/26(木) 09:54:32 ID:Oh0EKWzP
>>626 すみません。
開発元へ報告しておきましたが、
簡易なパターンの調査はしておりません。
簡易なパターンにすればみんなに追試してもらえるのに
>>628 ちゅーか不具合報告の鉄則ですね。最小限の再現パターンを提示するのは。
まぁ、今回は再現環境一式を出してるから悪くはないけど。
もう修正版アップされてたよ。はやっ。
631 :
NAME IS NULL :2007/04/26(木) 16:50:23 ID:Oh0EKWzP
>>630 2007/04/26版で正常動作を確認しました。
開発元さん、アドバイス頂いた方へ感謝です。
632 :
NAME 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での基本的な検証ができた後、そろそろ移行したいと思っています。
8.2.xはまだ様子見中だからなあ
なんで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 ?
635 :
NAME 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 を参照して下さい。
636 :
NAME 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?
>>636 格納する文字種によるので一概には何とも。
そのカラムに日本語も格納される可能性が高いと思われるなら1文字3bytesで見積もるし、
確実にシングルバイトの文字しか入ってこないなら1文字1byte。
Unicode全部想定すれば1文字4bytesだってあり得るから、
多言語対応で考えるなら1文字4bytesで見積もるよ。
とりあえず概算でよけりゃ1文字2bytesでもいいんじゃね?
>>636 > データベースをUTF-8にすると、フィールドサイズはバイトでなく、文字数として扱われますよね。
別にUTF-8でなくとも、文字数だけど。7.4あたりで仕様変更されてから。
EUC_JPでも漢字1文字が長さ1だよ
640 :
NAME IS NULL :2007/05/07(月) 21:18:36 ID:kfw86U9I
postgreのデータ容量見積もりってどうしてる? 参考になるものありますか。
失礼します。 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
VACUUM ANALYZE かけました?
>>642 レスありがとうございます!
VACUUM ANALYZE…やってないです。
今ググって意味を調べたってレベルです。。
何回も見てたページのど真ん中に載ってました。。
依存関係のあるテーブルをいじった際に応答速度が変わったって所から、
あやしい感じですね。。明日朝一で試してみます!
ありがとうございました!
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()
>>644 たぶん、タイムアウトしていると思われ。
cmd.CommandTimeoutを長めに取るか、いっそ0にして終わるまで永久的に待機させるか。
一旦psqlなりPgAdminなりでVacuumを実行してみてから試せば、Vacuum時間も一時的に
短くなるから確認しやすいだろう。
レスありがとうございます。 CommandTimeoutを0に設定することで、無事にVacuumを実行することができました。
647 :
NAME IS NULL :2007/05/11(金) 00:45:25 ID:LmqbBaoB
初歩的な質問なのですが、テーブル内のOIDをdeleteすればそれに対応するラージオブジェクトも削除されるんでしょうか されないのならどうすれば良いのですか?
648 :
名無し :2007/05/16(水) 05:27:18 ID:???
649 :
NAME IS NULL :2007/05/19(土) 23:42:29 ID:dKYDsDbp
APIの変数、関数名がクソなんだが。読みにくくて仕方ない。
能力ない人は無理して読まなくてもいいんじゃないかな。
651 :
NAME IS NULL :2007/05/20(日) 16:20:52 ID:WPBssusO
判りにくい変数名のコード読める事を能力だと思ってる奴ってまだいるんだね。 読めるにこした事はないけど、一貫した基準で初めて見た人でも判る名前を付けるのが能力だよ? まぁpostgresql何ぞで仕事してる奴に生産性の話しても仕方ないか。
> 判りにくい変数名のコード読める事を能力だと思ってる奴ってまだいるんだね。 保守する現場だと普通に必要な能力だと思うけどな。 > 一貫した基準で初めて見た人でも判る名前を付けるのが能力だよ? コーディングルールに従うだけのことをわざわざ「能力」と言うの? ある意味能力の1つだけど、ずいぶんレベルの低い話をしてるんだね。
下っ端が何か言ってまーす。
まぁ、言いたいことはたくさんあるが、とりあえずそのクソと思われる 変数名・関数名を挙げてみてよ。
すみません、教えてください。 PostgreSQL8.1.4なんですが、カタカナだけの列を基準に、 50音順に並べ替えたいのですが、期待通りになってくれません。 DB作成時に --nolocaleを指定しろっていうのは発見したのですが、 すでに運用中のDBなので、できればDBの再作成はしたくありません。 なにか他に手段はありませんでしょうか?
ドキュメントを見る限り、LC_COLLATEとLC_CTYPEはあとからの変更は無理みたいだね。 どこか変えてインデックス再構築とかあるのかもしれないが、ちょっとわからん。 しかし現行で動いてるDBをそのまま移行するのは手間ではないよ。 ものすごくでかいとか、止める暇が無いくらい頻繁に更新してるんでもない限り。
657 :
JPUG中の人 :2007/05/21(月) 18:56:27 ID:spUpon8Y
659 :
NAME 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でフォーマットしてあります。 対処法ご存知でしたらお願いします。
660 :
NAME IS NULL :2007/05/25(金) 02:57:18 ID:PMew0+mx
>>655 どういうときに並べ替えをされたいのか、わかりませんが、
なんらかのプログラム言語を使用しているのでしたら、
並べ替え用の列をソフトウェア上の変数やグリッドなどに追加して、
対応してみるとかは?
661 :
NAME 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 .... みたいな感じ
Win版のPostgreSQL8でちゃんと動く、レプリケーションの仕組みってあるの? pgpool とかは unix系専用みたいだし。 そういうことやりたいのならMySQLなのかしら・・・。
664 :
NAME IS NULL :2007/05/26(土) 06:27:33 ID:q4cdBz9a
osxでFAT32でさらに外付けか、、、マニュアルでリンクファイル作れる?
667 :
NAME IS NULL :2007/05/27(日) 04:53:10 ID:hFVpTI5x
>>659 一応自己解決という事で、報告。というか勉強になったので自慢させてくれ。
ソースをほじくり返してみたら”could not link file”のメッセージを吐く所は実質一カ所で、link()関数失敗時のエラーメッセージ。
link()関数のmanに曰く、
そもそもlink()関数で作ったハード・リンクはファイル・システムを跨げない、
ファイル・システムがハード・リンクをサポートしていない場合もエラー。
ソースコードを変えて、link()でなくてrename()関数を使うようにしてmakeし直してinitdbすると659の問題は発生しませんでした。
が、今度はアクセス権の指定が正しくないからといってdb作ってサーバに入れない。
FATはアクセス権設定できないので、諦めてサブHDDをmac本体と同じフォーマットにして再度make。
したら、見事に成功。めでたしめでたし。
ご清聴ありがとう。
いや、、、FATがアクセス権設定できないのなんてみんなわかってるだろ。 それでもあえてやろうという質問かと思ったら、フォーマットしていいのかよ・・・ WindowsだとFAT32でも何とか使えるし。お勧めはしないけど。
あ、そうなの。おれ馬鹿じゃん。 リンクエラーの所も判った上でスルーだった訳っすか。
リンクエラーはMacでやるチャレンジャーがいなかっただけかと
672 :
NAME IS NULL :2007/05/31(木) 22:12:17 ID:T1+g34Os
>>669 ほんとだな。そんな重要なトコ変えちゃっていいならOS変えろよみたいなアドバイスしてたよな(w
それは流石に話が違うんでは。
674 :
NAME 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のテーブルを使用しないで同じ結果がほしいのですが、 うまくいきません宜しくお願いします。
>>674 LEFT JOIN じゃなくてFULL JOIN
k1〜k3 の別名は端折るが、
SELECT * FROM t1 FULL JOIN t2 USING(i) FULL JOIN t3 USING(i);
676 :
NAME IS NULL :2007/06/11(月) 15:01:45 ID:Aqq3nwiZ
>>675 助かりました。
有難うございました。
少し感動です!
677 :
NAME 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 というエラーを出し、まったく応答しなくなります。 対処法をご存知の方おられましたら、ご教授願います。
679 :
NAME IS NULL :2007/06/12(火) 10:11:01 ID:ZoyGBZu/
>>678 アンチウィルスソフトは止めてあります。
止めてるってことはインストールはしてるんだね。 プロセス生き残ってたりしない?
どっちにしてもディスク周りに問題があると出るようだな ドライブ代えて試してみては
>>680 止めていると思ってたんですが動いてました。
どうもNOD32が原因のようです。
ありがとうございました。
683 :
NAME IS NULL :2007/06/13(水) 03:00:13 ID:lM41+/Yh
外部ファイルにSQLを書いてるんですけど、 その中にコメントって書けるんですか?
684 :
NAME IS NULL :2007/06/13(水) 09:21:55 ID:UeiB7K01
質問です。 「create table foo as select * from bar;」というSQLだと COPYコマンドというものを使った方がいいんでしょうか?
/* これも使えるか */ # MySQLだとこれもかな?
687 :
NAME IS NULL :2007/06/16(土) 06:51:44 ID:hWklptmu
>>685 遅くなったけどまじサンキューです!
C言語形がつかえるんですね!
688 :
NAME IS NULL :2007/06/16(土) 22:10:38 ID:9eh8zkQc
>>687 将来的に別DBへの移行を考えてるなら -- にしておいたほうが無難だよ。
一応 /**/は標準じゃなかったっけ まあ対応してないのもあるかもなあ
690 :
NAME IS NULL :2007/06/19(火) 13:50:36 ID:7TcVr+ml
ちとピントがずれてる質問かもしれませんが宜しくお願いします。 O/Rマッパーを噛ましているときに、ファントムが挿入されないようにするときの対処方ですが、 ストアドプロシージャーでロック掛けてるんですか? それとも他の方法使ってらっしゃるんですか?
691 :
NAME IS NULL :2007/06/19(火) 14:27:31 ID:7TcVr+ml
訂正 ×ストアドプロシージャー 〇トリガー
692 :
NAME IS NULL :2007/06/20(水) 08:58:12 ID:cIC7i3yO
データの更新履歴(挿入・更新・削除)ってログに残せるのでしょうか?
>>692 log_statement = 'all'
でどう?
695 :
NAME IS NULL :2007/07/02(月) 12:53:07 ID:NEpJtz1U
質問です id: serial というカラムを持つ aTable にレコードを insert したとき、 挿入したレコードのidを取得するにはどうしたらいいのでしょうか?
>>695 select文の最後に returning * を付けてみ。
ただしPostgreSQL 8.0 か 8.1 以上じゃないと使えないはず。
>>696 おお、select じゃなくて insert into の最後に returning * を書いたらうまくいったよ
ありがとぉ
returning って8.2からじゃないの?
>>697 あー、insert文の最後だったw
寝起きでぼけてたw
>>698 ググったら 8.2 からだった。すま。
insert into 〜;select currval('hogehoge_seq'); って一回で実行すると戻り値がそのシリアル値
>>699 いやいや、助かったよ
バージョン確認せずに試したらうまくいった
今確認したら 8.2 だった ^^;;;
8.2 未満の時はどうやってたんだろうねぇ?
SELECT nextval('hogehoge_seq'); してからその値を使いまわしてる serial も省略しないでその値を使用
>>701 おれは、挿入されたレコードの oid を取得して、その oid で再検索してた。
SELECT last_value from hogehoge_seq; してた
705 :
NAME 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版へも検討したほうがいいのかもしれないけど。
>>705 設計見直す前に発行してるSQLだ。
とりあえずEXPLAIN PLAN見てから考えた方が良いと思うが。
時間かかるのは、張ったはずのインデックスが使われて無い、というケースが多い EXPLAIN でチェックすることと、VACUUM ANALYZE することからだな
Win版に関しては新しければ新しいほどいいという偏見を持っているので、 いまさら8.0.3は論外だと思ってしまう。 にしても、1分かかるSELECTってインデックス使われていないとしか思えん。
709 :
NAME 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) って、やっぱり邪道ですかね?。。。(^^;
だからEXPLAIN使えばインデックス使ってるかすぐわかるだろ 先にそれやれと。
インデックスは張れば必ず使われるってもんじゃないんです それを確認するのがEXPLAIN
712 :
NAME IS NULL :2007/07/06(金) 15:51:04 ID:PG3xYQ8h
見方がよくわかりませんが、 『EXPLAIN ANALYZE ・・・』の結果の 『QUERY PLAN』に 『Index Scan using』がないってことは、 インデックスが使われてないってことでしょうか?
713 :
NAME IS NULL :2007/07/06(金) 16:39:29 ID:PG3xYQ8h
『Index Scan using』の個所は1箇所のみで、 プランに反映させるには、どういったチューニングをしたらよいのでしょうか?
まずは、どこに時間がかかっているのかを見て インデックスが無ければ作り、あるのに使われてなければ使うようにすればいいわけで、 VACUUM ANALYZE しても使わないようなら、SQLそのものを変える必要もあるかも
2つのフィールドを合わせたindexを作れば、 EXPLAIN で見たときに、index検索してくれるかも。 create index code_dateA_index on table1 ( code,dateA ); VACUUM ANALYZE table1;
716 :
NAME IS NULL :2007/07/07(土) 01:14:05 ID:4yvS7a5G
今から新規導入するなら8.2系がいいですか?それとも8.1系が枯れていて いいですか? ちなみに導入対象は業務系システムです。
>>716 create index code_dateA_index on table1 ( code,dateA ); は試してみた?
2つのフィールドを合わせたインデックス作れば、
ほぼ確実にインデックス検索されるはずだけど。
>>717 8.2でもう十分安定してる。
>>709 > code,dateA には、Index を張っています。
この例の場合、別々に張っても使われないと思われ。
失礼します。 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 ------------ 色々検索してみたのですが、上記エラーの情報が無い状態です。 どなたかこのようなエラーについてご存知の方いらっしゃいますでしょうか。 ご教授の程、宜しくお願い致します。。
リストアってことは前の環境があるのでは? 手動でインストールというのは、ソースからコンパイルしたということかな? そのソースのあるディレクトリの、 contrib/tablefunc はインストールした?
>>720 contrib/tablefunc/README.tablefunc
などを読みましょう。
>>721-722 ありがとうございます!
下層フォルダの物は、見てもいませんでした。。
インストールしてみます。
あれ?JDBC4.0に対応してる? 予想外に精力的な活動をしてたんだね
725 :
NAME 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|
> と言うか、表示の時に集計しなくて済むようにするにはどの様にすれば良いのでしょうか。 データ挿入する毎に集計結果を更新すればいいんじゃないかな。
idはidって名前付けているくらいだから主キーなのかな? update tbl1 a set count = ( select count from tbl2 b where b.id = a.id ) こんな感じか? PostgreSQLで動くのかどうか分からないけど ^^; 一応、Oracleではこれでいいような気がするけど違っていたらすまそ
728 :
725 :2007/07/14(土) 17:57:21 ID:s1oJSC8U
>>726 ありがとうございます。
更新はデーター挿入と同じSQL文で可能なのでしょうか?
勉強してみます。
>>727 ありがとうございます。
自分で書いたサブクエリはエラーばっかりで2日近くも弄ってましたが
ご教示頂いたSQLですんなりと動きました。ほんとに助かりました。
729 :
727 :2007/07/14(土) 18:06:26 ID:???
>>728 基本的な書き方なので大丈夫だろうなとは思っていたけど
動作確認してなかったので動いて良かったです^^
730 :
NAME 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 が使用されているかどうかの確認はしていません。
731 :
NAME IS NULL :2007/07/18(水) 05:17:29 ID:F4zU+wmw
732 :
NAME 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);
PostgreSQL8.2+RedHATーES4で試験運用していますが、 $PGDATAをまっさら初期と同じ様にしたいのですけれども、 どうすればよいでしょうか? またそうすることの何かリスクはあるでしょうか? ご教示いただけると幸いです。
>>733 $PGDATAをどっか移して
$PGDATAは改めて initdb すればいいよ。
735 :
733 :2007/07/18(水) 22:32:25 ID:???
initdb は、--no-locale でね。
最近あるOSS(MySQL対応)の、 PostgreSQL対応をさせようという企画に関わっているのだけど… どうやったら同士を増やせると思いますか? あ、関わっているだけで直接コーディングしているわけではないので 細かいところはわかってないかもしれません;;
宣伝すればいいんじゃない? オレはそういうのがあったら参加したいかなあ
grantを使ってテーブル単位で権限を与える方法はわかったのですが データベース単位で権限を付与する方法がわかりません。どうすればいいのでしょう?
DB単位って、例えば?
742 :
740 :2007/07/19(木) 23:51:31 ID:???
---------Database--------- │ tableA │ │ tableB │ │ tableC │ -------------------------- こんな感じのをデータベースを指定して一気に権限付与できないかなってことです
743 :
NAME 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 で試せばよかったのかなぁ。。。
744 :
NAME 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もありました。
745 :
NAME IS NULL :2007/07/20(金) 11:43:34 ID:HKe463Bn
746 :
NAME IS NULL :2007/07/20(金) 14:21:46 ID:bJm05vQT
>>745 ご情報、ありがとうございます。
ずっと以前からあったんですね。
747 :
NAME 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'
すいません。教えてください。 bit形式のデータをtextなりvarcharにキャストすること できませんか? select B'101010' :: text; みたいな感じで。
\df で見てもそれらしいの無いね。 関数作るのが手っ取り早いか?
>>749 PLでできるかなぁ?
ちょっと困っています。
>>748 一文字に収まる想定?
select chr(B'101010' :: integer);
とか、どうにかなるんじゃない?
>>751 バイナリをintにして文字コードにする(cha)
ではなくて、人間からみたら同じ'1010'なんだけど、
あくまでもバイナリのカラムに入るような値を文字列textなりvarcharに入る値
にしたいのです。
cで組めばできるんだろうけど、posgreで組んだことないです。
>>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
ぐらいしか思いつかん。
>>753 なるほど。
一個一個AND取っていくやり方があるなら
ビットシフト処理でフラグを拾っていく
PLもできそうですね。
一瞬、
bit | txt
------------------
1010 | 1010
みたいなテーブル作っちゃうのが
早いような気がしてきましたが。
755 :
NAME IS NULL :2007/07/25(水) 06:48:36 ID:sY0o2URa
邪道かもしれないけどcstringを経由する。 => select textin(bit_out(B'1010')); textin -------- 1010 (1 row)
>>755 す、すごい。
これってCの関数をコールしてるんでよね。
これでなんか問題なり制約がでてくること
ありますか?
もちろん移植性は悪いでしょうが。
757 :
755 :2007/07/25(水) 23:47:27 ID:CNk60Kvd
コードを見た人がギョっとする以外に特に問題は無いと思う。 うまく説明できる気がしないけど、 浮動小数点型だろうが幾何型だろうが、どんな型であっても 表示するときは文字列なわけだし、SQLで入力するときも 文字列なわけなので、内部でどんな風にデータを保持していても、 文字列(cstring)と変換可能なわけです。 それをやる関数がpg_type.typinputとpg_type.typoutputで、 ここでいうtextinとかbit_outとかがそれ。
これで、「なんだかんだいっても、最後には俺のところに 戻ってくるんだろ」とか能天気に思っていたらコワス
↑勿論誤爆です。
>>757 なんとなくイメージはつきます。
あとは将来この処理をpgの関数としてwrapしたのが実装されると
いいなぁ。別に難しくないんだろうから。でもニーズはないかな。
ともあれありがとうございます。
761 :
NAME IS NULL :2007/07/26(木) 17:30:39 ID:8A/qwV0/
Postgreって、あるレコードをUPDATEし続けた場合、見えているのは1レコードでも、 検索時にUPDATE回数分のレコードを検索対象にするってほんと? 結果は1件だけど、検索範囲がUPDATE回数分のレコードという意味です。 バキュームしないと、対象から消えないとか。
762 :
NAME IS NULL :2007/07/26(木) 18:54:55 ID:dVEWGYsb
バキュームしないと物理レコードが減らないってことじゃないですか?
http://www.postgresql.jp/document/pg813doc/html/maintenance.html 別に論理的に削除された見えないレコードも
UPDATE したりしてるわけじゃないから、
バキュームをしていなくても、
物理レコードが極端に増加していなければ、
処理速度が著しく遅いと感じることはないと思います。
PostgreSQLのバージョンによって違うようですが、
処理速度が著しく遅く感じるのは、
おそらく、INDEXが有効に機能していなかったり、
複合的なSQL文場合の解析、内部処理に問題がある場合のようです。
その場合、SQL文の書き方を変えることができる場合だと、
改善できる可能性があるようです。
763 :
NAME 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は、必ず発生するわけですから、 バキューム処理は、適時行ったほうがよいということには、 変わりはないと思います。
764 :
NAME IS NULL :2007/07/26(木) 20:17:51 ID:dVEWGYsb
ひとつ気になったことなのですが、 バックアップファイルのサイズですが、 フルバキュームをする前と フルバキュームをした後を比較すると、 後の方がファイルサイズが大きいようですが、どうですか? 物理レコードの削除の領域より、なんらかの管理レコードの方が増えるからなのでしょうか?
766 :
NAME IS NULL :2007/07/26(木) 22:06:04 ID:dVEWGYsb
>>765 ありがとうございます。
すべて簡単には理解できない内容ですが、(^^;
参考になります。
ファイル容量の肥大は問題となるレベルではありませんが、
ver 8.3 の 新機能 HOT で、さらに高速になるのは、期待ですね。
767 :
NAME IS NULL :2007/07/26(木) 22:09:11 ID:E0VDLWtx
761のいっていることの真相は?
> 検索時にUPDATE回数分のレコードを検索対象にするってほんと? 「検索対象」というのには語弊がありそうだが、 MVCCも絡んでるし、有効かどうか選択されているはず。 (少なくとも7.x以前はそうだった) 参照トランザクションがなくなった時点で無効レコードに指定 していって、検索対象から外れりゃいいのだろうけど、 その判断をすべてVACUUM実行時にまわした結果かな。 ちなみに、トランザクションをアボートしても、その間で 発行されたINSERTやUPDATEでも不要領域は増えます。
> 検索時にUPDATE回数分のレコードを検索対象にするってほんと? 7.3以降の話をすると、インデックスでの検索ならば、 「UPDATE後の次の検索」は、確かに空振り(ゴミも検索)がある。 ただ、そのときにインデックスにフラグが立つので、 2度目以降の検索では、無駄な行のピックアップはしない。 なので、最悪でも「2倍程度は損をしている」という理解でOK。 もちろん、検索が更新より多ければ、もっと効率は良くなる。
770 :
NAME IS NULL :2007/07/31(火) 12:01:32 ID:jnuhsF8J
1回/秒の周期でアプリがテーブルの1行をUPDATEするため、 1回/時間で通常Vacuum(FULLでない)を行っていますが、 Vacuum実行時間帯に、稀にアプリの実行時間が、 平均300msecのものが、4〜7secになることがあります。 原因調査中ですが、通常Vaccumでも、ロックがかかるようなことがあるのでしょうか?
771 :
NAME IS NULL :2007/07/31(火) 17:07:58 ID:NYEBxcjn
ロックというよりインデックスの再生成に時間がかかってるから処理できないとか? とあんまポスグレ知らない俺が予想してみる
>>770 起こる間隔が一定なら、チェックポイントかなぁ。
チェックポイントやbgwriterのまわり弄ってみて。
pgpool-IIをパラレルモードで使おうと思うんだけど、 これってバックアップを取る場合は普通にpgpoolのポートに対してpg_dumpで良いの? リストアもpgpoolのポートに対してpg_restoreで良いんだろうか。 pgpoolの開発サイトにその辺の事が載っていないので躊躇ってる。 あと、pgpoolはpgAdminIIIに対応しているのかしら?
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のバックアップは必須とか) ご教示いただければ幸いです。よろしくお願いいたします。
>>774 とりあえず、両方やれ。max_fsm_pagesを増やす & vacuum full
その後、autovacuum = on にして放置。
776 :
774 :2007/08/07(火) 11:55:29 ID:???
一度autovacuum = onでデータ整合がとれず 挙動がおかしかったので現在はoffにしています。 その時、あまりにもおかしかったのでちょっと躊躇しています。 また、vacuum full は一部バグがあるという情報が あり、どうしたものかなぁとも考えています。 もう少し安心して作業できる手順なんかご経験であれば お伺いしたいところです。
> 一度autovacuum = onでデータ整合がとれず 仮にそんな挙動があったとしても、autovacuum が原因ではない。 autovacuumと、手でvacuumを叩くのとは、本質的な違いはない。 > vacuum full は一部バグがあるという情報 古いバージョンだと、高負荷時に問題があった。 最新版に入れ替えるか、いったんアクセスを止めたあと叩けば問題は無い。 ちなみに、autovacuum は、勝手に full することはない。 「安心」したいのならば、最新版にバージョンアップした上で、autovacuum = on にすべき。 よほどキルが無い限り、マニュアルで管理されていることほど危ないことは無い。
778 :
774 :2007/08/08(水) 07:04:49 ID:???
そんな簡単に最新バージョンにアップできるなら 極端な話vacuumもいらんのです。 バージョンアップしてデータ移行した時点は無駄なタプルは ないわけですから、都度都度バージョンアップすればいいのです。 autovacuumは運用上高い負荷時に処理が 追い付かないことがあるようです。 マニュアルでもautovacuum、cronでのvacuum かは運用形態にあわせて任意です。 一義的にautovacuumにせよとは書いていないと思います。
774はたぶんものすごいバカ
780 :
774 :2007/08/08(水) 11:27:08 ID:???
ハイハイ ワタシハバカ デ アナタハ テンサイ デス
>サボってかなりの期間vacuumを行わないでいたのですが、 autovacuumをあえて使わないんじゃなくてさぼってただけなんでしょ cronでもautoでも好きなほう使えばいいじゃん
>>776 手動でやるのがいいんじゃないかな。
自分の目で確認できるしね。
autovacuum と cron を併用するのがベストだと思うけどなぁ。 どっちもサボっていた上に、まともに初期設定もしてないんだろ? 警告が出たあと取り乱しているのが滑稽だ。
plpgsqlで分からないことがあるのでどなたかご教示ください。 例えば、戻り値の指定がSETOF RECORDである関数、 CREATE FUNCTION test(integer) RETURNS SETOF RECORD AS ... があったときに、呼び出し側で、 SELECT * FROM test(1) AS t(id integer, id2, integer) のように書く必要があるように思うのですが、関数側で呼び出しのAS以下を指定する方法は無いでしょうか。 返すRECORDが複雑になってくると、いちいち書くのが面倒くさいのです。 よろしくお願いいたします。
>>784 関数側で指定すると言うことは、ある決まった型を必ず返すと言うことだよな。
CREATE TYPE testfunc AS (id integer, id2, integer);
って型を作っておいて、
RETURNS SETOF testfunc AS ...
ってすればいいんじゃね。
787 :
784 :2007/08/10(金) 22:27:48 ID:???
>>785 >>786 ありがとうございます。
とりあえず、785さんの方法で解決しました。
OUT引数についても調べて(み|い)ます。
ありがとうございました。
8.3って、いつ出るんだ? もう8月中旬だぜ。
790 :
788 :2007/08/20(月) 17:07:38 ID:???
>>789 さんくす。夏に出るって記事を読んだもので、
てっきりもうすぐ来るのかとwktkして待ってたのだ。(´・ω・`)
791 :
789 :2007/08/21(火) 00:52:31 ID:???
792 :
NAME 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
>>792 詳しくは外部キー制約でググってみそ。
CREATE TABLE itemテーブル (
shopid integer REFERENCES shopテーブル(id),
name text
);
shopテーブルのidはプライマリーキーになってるかユニーク制約が掛かっていること。
itemテーブルにもプライマリーキーがほしいところ。
UNIQUE(shopid,name)制約も掛けておいた方がいいかな。
794 :
792 :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)
);
795 :
NAME 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
>>795 boolean not null で駄目なのか?
797 :
795 :2007/08/28(火) 23:45:00 ID:???
>>796 うわぁ、そんなものがあったんですね。
よく調べずすいません。。。
今は環境がなく試せませんが明日やってみます。
ありがとうございます。
798 :
NAME IS NULL :2007/08/31(金) 13:53:19 ID:f4y0TXM4
PostgreSQLの名前をPostgresに変更しようという件について
名前は重要だと思うよ。 変更に酸性。 名付けは細木数子に頼むのが良い。
800 :
NAME IS NULL :2007/08/31(金) 16:58:08 ID:f4y0TXM4
名前を変えられたら、PostgreSQLを使った製品開発やドキュメント書いてる俺涙目。 名前を変えるよりロゴを萌え絵にしろよw
801 :
NAME IS NULL :2007/08/31(金) 19:39:18 ID:QYPZ7Orq
じゃあ劇画調で
vacuumdbって-Uオプションあるやん。 あれって何か違い出るの?
-U username : 接続するユーザ名を指定します。 ふつうは管理者権限で接続するだろうから、あんまり差はない。 ユーザごとのGUC設定を使っていると意味があるかも。 vacuumdb 専用のユーザを作って、そのユーザだけ vacuum_cost_delay を設定しておくとか。
805 :
NAME 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"
でも代用出来そうな。
>> 805 ユーザ単位のパラメータ設定 ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }] あと、最近 vacuum と一緒に他のコマンドを実行できなくなったので、 その指定方法だとうまくいかない。まぁ、ファイルを読ませればいいんだけど。 ERROR: VACUUM cannot be executed from a function or multi-command string
807 :
NAME 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" のエラーがでます。 どうしたいいでしょうか? よろしくお願いします。
日本語でおk
810 :
NAME IS NULL :2007/09/03(月) 15:12:22 ID:aCl1fY0Z
>>806 8.2.4だとマルチステートメントでもVACUUMは動いたけど、「最近」って8.3のHEADのこと?
>>807 set client encoding to 'EUC_JP'
つか、どっちがUTF-8でどっちがEUCなんだかわかりにくいぞ
client encoding は client_encoding だった。かえといてね
>>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 で導き出せるんじゃね。
815 :
813 :2007/09/04(火) 01:00:49 ID:???
>>814 813です。
曖昧な質問に対して的確なレス、有難う御座いました。
意図した形で集計する事が出来ました。
参考書等を購入し勉強したのですが、813さんの様なクエリは思いつきませんでした。
本当に感謝しています。
有難う御座いました。
816 :
NAME 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 ここ読んでみたんですけど、まどろっこしく書いてあって、イマイチよくわかりません。
お願いします。
EXPLAIN で
818 :
NAME IS NULL :2007/09/05(水) 15:18:38 ID:q0Q7e1d0
>>817 サンクス!
そうか、忘れてました。すいません。
ちなみにindex使ってました。
819 :
NAME 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
重複数を数えるのはGROUP BY SELECT name, count(name) FROM list GROUP BY name ORDER BY count DESC; で、順位を出すにはサブクエリ使って結果のcount が少ないやつの数を数えるんだけど tyっとオレにはすぐは書けないわ・・・
821 :
NAME 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のメモリ関係の設定がどうなっているかわかりません。 ちょっと情報が少ないですけど、何が原因心当たりのある方いらっしゃいますでしょうか? お願いいたします。
とりあえず、EXPLAIN で
>>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;
824 :
NAME 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が役に立つときはないのでしょうか?) プランナがうまく選んでくれるよう設定でどうにかならないのでしょうか? なんか最後質問攻めになってしまいましたが、ご意見お願いします。
8.1系は何かと難ありという話をここでも見聞きしているのでパスしてる。
んで、DB移した後ANALAYE Table してなかったってオチじゃないでしょうね
>>824
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 してなさそう。
>>826 「プランナが悪くなった」とは聞いてないけど、
同様の事例は何度か見たことがある。
「PostgreSQL & pgsql-jp ML 3テーブル目」で見たんだっけかな?
EXPLAINを知ってて、ANALYZEを知らないなんてことは考え難いし
ANALYZEしても駄目だったという報告もあった。
828 :
819 :2007/09/05(水) 22:30:42 ID:???
>>820 ,823
どうもありがとうございます!
わからない箇所だらけですが解読してみます。
ほんとうにありがとうございました。
>>827 「きちんと動いた」ケースは、報告されないことに注意。
世の中の大半のケースでは、問題なく移行できているかもしれない。
もちろん、できていないかもしれないけど。
830 :
q0Q7e1d0 :2007/09/06(木) 09:59:32 ID:ndlSTD04
マジでごめんなさい 今回のケースはANALYZEしてなかっただけです。 したらプランナHash Joinを選びました。 レスしてくださった人ありがとうございました。
831 :
819 :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
この部分がよくわかりません。。。
たぶんランキングの順位の番号を出していると思うのですが、どういう処理をしているのでしょうか?
832 :
823 :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 はこれを少し工夫したやつ。
833 :
NAME 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". のようなエラーがでたんですが、意味がわかりません。 どういう対処したらいいのでしょうか? 教えてください。お願いします。
英語嫁。initdb 先のディレクトリが空でないと書いてある。 すでに initdb 済みなら、そのまま使えばいい。 再初期化したいなら、rm -r $PGDATA して全部消せばいい。
FCにyumとかrpmで入れたらinitdb済みじゃなかったっけ
836 :
NAME 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 です
837 :
NAME IS NULL :2007/09/09(日) 06:26:26 ID:7m3/qMSP
834さん835さんありがとう 836わかる方お願いします。
質問の文章が曖昧で何とも 1> 質問するなら自分の中の独り言を混ぜるな 2> 多分initdb出来てねえからじゃねえかと思うが あとそういう時は ls -l よりも ls -al
839 :
NAME IS NULL :2007/09/09(日) 21:50:18 ID:7m3/qMSP
どうしても本みてもできません。 みなさんはどのようにしてやりましたか? 自分はfedoracore4で php+postgresqlで作る実用システムと php+postgresqlで作るwebシステムとサイト を見てやっているんですが、まだ、postmasterの起動 もままならないです。 どういう本やサイトを見ればphp+postgresqlの 構築ができるでしょうか? こういうサイトがあるよとかこういう本があるよ とか教えていただければ幸いです。
>>839 PostgreSQLを動かすくらいだったらググるだけで出来たよ。
841 :
NAME IS NULL :2007/09/10(月) 00:26:18 ID:i9bzVQHH
自宅サーバーでphpとpostgresqlを動かしたいのですが、 なんか書籍がすくなくてfedora core4でやった人 いませんか?
動かすだけならREADME読むだけで十分というか、あれ以上にすることないしなあ
843 :
NAME IS NULL :2007/09/10(月) 00:57:48 ID:i9bzVQHH
php+postgresqlを連動して動かしたいんですが、 webアプリを自宅サーバーで動かしたいんです。 yumでpostgresqlをいれてやってもできなくて、 ダウンロードしてやるようにしています。
>>843 しつこい。
明確な回答が得られないのは、質問の仕方が悪いからだと理解しなさい。
846 :
NAME IS NULL :2007/09/10(月) 04:58:55 ID:i9bzVQHH
はい、わかりました
>>846 yumでダメならソースからコンパイル汁。
カスタムアーカイブでバックアップする場合、文字コードって気を付けないとダメ? pg_dumpのあとにnkf使って変換することに意味あるのかな、と気になりまして。 どなたかご存知でしたら、教えて頂けませんでしょか?
クライアントのエンコーディングを指定してやるのがいいと思うよ まあ直接書き換える最終手段は、時には有効だが
850 :
848 :2007/09/11(火) 10:20:20 ID:???
851 :
NAME IS NULL :2007/09/17(月) 07:28:06 ID:BM21nJlH
PostgreSQL 8.2.5, 8.1.10, 8.0.14, 7.4.18
853 :
NAME IS NULL :2007/10/03(水) 01:02:40 ID:cKWyHEcN
8.3何ヶ月遅れてんだよ
今出ましたー
下らない質問かもしれませんが、教えて頂けると助かります。 FreeBSD6.2でPostgreSQL7.4.17使ってるんですが、 PostgreSQLの管理用アカウントと同じ名前のDBって必要ですか? initdbを実行すると、template0とtemplate1と出来ますけど、 postgresっていうDBは必須なのかな…と疑問に思いまして。 DB関連の情報(メタデータ?)はtemplate1に入るから、必須じゃないのかな? ご存知の方いらっしゃいます?
>>855 createdb とかがデフォルトで接続するデータベースなので、
drop するとそれらのユーティリティコマンドがエラーが出る場合がある。
まぁ、代わりに template1 につないで CREATE DATABASE すれば良いので、必須ではないけど。
>>856-857 ありがとうございます。
任意だったのか…。
template1を参照するようにします。
859 :
NAME IS NULL :2007/10/06(土) 18:15:06 ID:3Tvo6iqU
8.3β1
860 :
NAME IS NULL :2007/10/08(月) 10:16:07 ID:HIdUZyeW
861 :
NAME IS NULL :2007/10/08(月) 21:44:19 ID:HIdUZyeW
862 :
NAME IS NULL :2007/10/10(水) 05:12:31 ID:L6dZ+qSx
PowerGres使ってる人いる? 使いやすい?
864 :
NAME IS NULL :2007/10/24(水) 16:34:52 ID:BHsGSzOM
>>821 バージョンアップにより、全般的にかなり早くなったようですが、
特定のSQLでは、極端に遅くなってしまう場合もあるようです。
その場合は、SQLを工夫して、変更すれば対処できるかもしれません。
下記の場合の例があるので、ご参考に。
>>747 あとは、8.3 の登場を待つしかないかな。
865 :
NAME IS NULL :2007/10/29(月) 12:42:43 ID:K87H+Eo2
8.3-beta2
Web File Browser のパスがカオスなんだが > 8.3beta2
867 :
NAME IS NULL :2007/10/31(水) 21:15:13 ID:PtM07kiJ
最近Sunがやけにプッシュしてるなぁ。
869 :
NAME IS NULL :2007/11/01(木) 18:03:47 ID:dyRDA18A
Windowsに入れたら、Windowsにもpostgresっていうアカウントができてしまったんだけど Windowsの方のpostgresっていうアカウントは削除しておk?
クライアントとして使うなら不要。 サーバとして使うなら必要。
871 :
869 :2007/11/01(木) 19:33:50 ID:???
>>thx どっちとして使うかよくわからん。。。PHPのやつやるんだ。 一応、残しとくよ。レスありがとう。
いや、それくらいは理解しとけってw
873 :
NAME IS NULL :2007/11/02(金) 11:41:48 ID:A+w3KhOw
>>871 皆通って来た道だがんがれ。
多分100回はOSごとインストールし直すとおもぶ
俺なんか1000回もした。
875 :
NAME 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?) アドバイスお願いします。
CGI実行するユーザーとCGIでアクセスするときのユーザーは無関係よ DBIのconnectの例文を読めば分かる
Windows版って業務に躊躇なく使えるレベル? Windowsでやったことないもんで。
878 :
867 :2007/11/02(金) 23:29:48 ID:???
さっき見てみたら本家のリンクも修正されてた。 今後は最新のbetaには番号を付与しないパス名にするんだろうな。
879 :
NAME IS NULL :2007/11/03(土) 00:18:16 ID:Ng9uGUy5
>>868 けど、Solaris上でPostgreSQL使ってる奴なんて見たことないな
880 :
NAME IS NULL :2007/11/03(土) 01:09:23 ID:Lnnx883U
>>877 ウウチは普通に使ってる
7.4と8.2で
ミッションクリティカルな観測系のシステムに使ってみてる トランザクション数はぼちぼちあるほうだと思うけど
ただ、試すならマイナーバージョンが古いのはオートバキュームがバグもちなんで対策済みのものを使うことをお勧め
VS派なんでSQL鯖2005のが好みだけどPostgresのパフォーマンスも悪くないと思うよ 特に8.xになってSELECTマシになった気がする
のは気のせいかもしれんが
881 :
NAME IS NULL :2007/11/04(日) 22:01:58 ID:47ZLt+ou
7.4ってwindowsネイティブ?
>>882 んにゃ、7.4はcygwin上でないと使えないべ
windows native対応は8.0から
883 :
875 :2007/11/05(月) 15:07:24 ID:???
CGI の設定ファイルの dbname をテスト用db名にしたままだった… スレよごしすみませんでした。 >876 レスありがとうございました。
>>879 うちも普通にSolarisにPostgreSQLだ。
プリインストールのPostgreSQLが邪魔だw
885 :
NAME IS NULL :2007/11/08(木) 01:03:47 ID:s9agLjsJ
>>884 使った事無いけどkwsk
Linuxとかに標準搭載のPostgresみたいなものなのかな?
てかみんな実務でバージョンいくつ使ってる?
ウチは今のところ7.4なんだが
ほえ Linuxなら 8.1 8.2 使ったほうがいいよ。 バキュムも改善されてるし、なにより速い。 正直オーコーと変わんないよ。 てかここウィンのposdgreでしょ。
>>886 【Windows】【対応】はPostgreSQL 8.0以後は「Windows対応」したことを
表しているだけ。
もう十分周知されていると思うので、次スレでは「Windows対応」の文字は
消した方がよいと思う。
>>887 最初にスレタイ見たとき、Windows専用かと思った
俺もそう思ったが、MLのスレが無くなったらもうここしかないからな
絶対スレタイが癌になってる。
今来た私めもそう思いました。 UNIQUE 制約の付いたカラムがに重複するレコードを INSERT 使用としたときに出る エラーって「 23000 整合性制約違反 integrity_constraint_violation」 でええのか?
23505 duplicate key value violates unique constraint "..." だと思うが。
893 :
NAME IS NULL :2007/11/11(日) 10:36:38 ID:04zEFGg4
>>885 うちは 8.1 使ってます。8.2がサブクエリで遅くなるケースがあるって
どっかで読んだので8.2は止めてます。pgpoolで2重化もしてますが、今んとこ
とくにトラブルないです。sqlの書き方で、indexをうまく使ってくれない
ケースが2回くらいあったけど、その他は不満なし
すいません。教えて下さい。 環境:WindowsXP-PostgreSQL8.2.0 症状: いつの日かpgAdminIIIを起動して使用してるDBを開こうとすると 正常に見えることもあるが、 エラー(コネクティングエラー)を吐いたり、 保存してあるはずのパスワードを聞かれたりして(ちゃんと入力してもエラーとなる) 動作が不安定となる。しばらくは騙し騙し使っていたが、全く開かなくなったので、 再インスコしようと思いDBをバックアップをしようと思ったですが、 pg_dumpも同じエラーで起動できずに困ってます。 DB領域を消さずに再インスコしてアタッチできるでしょうか? また最初のインスコ時にDB領域を変えていないのでデフォだと思うのですが、 その場所ってどこだか教えて下さい。
>>894 データ壊れてなけりゃ同じバージョン、同じOSならそのまま使える。
場所は、postgresql.confのあるところだよ。
メニューにeditの項目あるべ。
Program Files\PostgreSQL\8.2\data だと思う。
不安定なのに同じエラーとはどういうこと?
896 :
894 :2007/11/12(月) 06:59:46 ID:???
>>895 レスありがとうございます。
恐らく不安定で動かない時はサービスが停止しちゃっている様子みたいです。
一度再インスコしてみます。
ただ不安要素としてThinkPad X60を使用しているのですが、
これって最初からパスワードを別に覚えさせるThinkVantage Client Security Solution
というソフトが入っていることですかね。。。
これが何やら悪さしてる気がしなくもないです。
897 :
JPUG中の人 :2007/11/12(月) 16:53:14 ID:uz0r3I2D
ニートがいいっぱーい ニコニコ動画。 という事で無職の人間が行ってもいんですかねー。 やぱ会社員じゃなきゃだめなんですか。
ポストグレス使ってる人はほとんど無職だよ
900 :
NAME IS NULL :2007/11/12(月) 20:09:38 ID:BUYdaGs/
Look for 8.3 beta 3 late this week.
>>899 そ そうなんですかー なんかこわいな。
でもエントリはOKなんですね。よかった。
バックアプとフェイルオバ どうやってるのか聞いてこようっと。
実際やってないとこ多いからねw U know.
>ポストグレス使ってる人はほとんど無職だよ すごい言い切りだ
903 :
NAME IS NULL :2007/11/14(水) 01:54:13 ID:CafCLU7e
>>904 ややこしいネーミングw
2.2とかにしとけよ
プゲプール
すみませんが、お知恵を拝借させて下さい。 PostgreSQLでSQL Serverで言うところのリンクサーバみないな 機能ってありますが? 社内で稼動中のOracleのテーブルをPostgreSQLから参照して サービスを提供するような物を考えているのですが方法が分かり ません。 Oracle側は別部門の管理で参照する権限しかないので、テーブル の参照内容をPostgreSQLへ取り込みたいのです。 なにか良い方法は無いでしょうか?
910 :
NAME IS NULL :2007/11/14(水) 21:34:52 ID:Ukk+YMyt
>>909 参照だけならSELECT権限だけで充分じゃないの?
なにがしたいのかわからん。
InstantClientとかOO4Oで繋げたら?
リンクサバ?
>>909 PostgreSQLに接続して、Oracleのテーブルを参照しようってこと?
>910
ご意見ありがとう御座います。
色々な方法を模索しているのですが、InstantClientとOO4Oに
ついても調べてみます。
>>912 そんな感じです。
ある時点でのOracleのテーブル内容をPostgreSQLに蓄積したいのです。
一定間隔(1時間毎とか)でOracleのテーブル内容をPostgreSQLのテーブル
に保存して履歴の調査などに使えないか考えているのです。
見れればいいのねw あうDBの参照結果を別のDBに格納する事 実に当たり前の事と思う。
>909 一定間隔でいいのなら、 sqlplusでOracleからテキスト書き出し → copyでPostgreSQLにテキスト取り込み なんてスクリプトをcronで回せばいいんぢゃね?
Hi! Nice site!
Hi! Nice site!
Hi! Nice site!
Win 版 8.1 の頃にエンコーディングに UTF-8 使って日本語の LIKE 検索で引っかからねーだったか 何だったか (うるおぼえ) ここで質問させてもらったんですけど、8.2 での UTF-8 使用って問題ない ですかね?
それエンコーディングの問題なの?
>>921 まさかとは思うが、 Like '*あ*' とかやってね? Like '%あ%' でやってる?
素インストールからオプション等無指定で簡単なサンプル作って何度か試した結果。 うろ覚えだけどこんな挙動だったような。 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 にしたんだけど、その後 バージョンアップでどうなったのかなーと思って。
8.1でも8.2でもそんな結果にならないけど。 initdb で locale の設定してたとか?
ってWin判の時のクライアントの環境によるのかな?
927 :
NAME IS NULL :2007/11/16(金) 18:44:56 ID:p3r+CAEx
>>924 今、その提示したSQLで試したけど、
8.24では問題ない。
使用環境がわからないけど、
pgAdminVでもそういう結果になるのかな?
ODBCとかJDBCとか使ってる?
バキュームすると問題解消するとかじゃないかね?
928 :
NAME IS NULL :2007/11/16(金) 19:47:09 ID:p3r+CAEx
>>909 ,914
自分の知っている言語で作成すれば簡単で何でも可能でしょう。
しかし、そもそも参照権限しかないのに、
テーブル内容をコピーして保存して利用するという点に問題があるような気もしますが。。。
(^^;
履歴調査などのためなら、
システム管理者が、普通にOracleで構築すればよいのでは?
別サーバーで低コストで管理ということなんでしょうが。。。
>>928 ご意見ありがとうございます。
定期的にOracleから取得するように、適当な言語で作成する
事にします。
参照するOracleは工場の生産制御のサブシステムのレプリ
マシンに相当するのですが、色々と決まりがありまして、
更新は上位のシステム以外は認めない事になっているのです。
まー、Oracleが中心になっている生産制御Sで実現すれば良いの
ですが、要するにお金が無いのです。
930 :
NAME IS NULL :2007/11/16(金) 22:29:12 ID:p3r+CAEx
>>929 社内規約やコスト面、大変ですね
Win版でXpや2000などでも十分、運用できると思いますよ。
931 :
NAME IS NULL :2007/11/16(金) 22:41:38 ID:p3r+CAEx
24時間何ヶ月も連続運用するなら、 ServerOS は必要になるので、Linux がいいですね WinXpだと1、2週間に1度は再起動した方がいいかもしれません。(かな?!)
バキュムは忘れずにね。
933 :
NAME IS NULL :2007/11/17(土) 10:11:48 ID:I/wB30qE
最新版にしとけよ 止めないバキュームのバグあっから
日本語でおk。Windows版の8.1以前はバグがあるのは事実だけど。
937 :
NAME IS NULL :2007/11/19(月) 23:28:06 ID:D/q9dvA5
beta3まだ〜?
938 :
NAME IS NULL :2007/11/20(火) 12:54:19 ID:rhmS86RL
8.3RCは11末、8.3.0は12月第2週かなぁ
リリース早すぎねーか。 半年に一回くらいでいーと思うが。
うーん、、、8.2を本番に乗っける前に8.3来ちゃったからなあw
941 :
NAME IS NULL :2007/11/20(火) 20:40:55 ID:wWhiZNbu
945 :
NAME IS NULL :2007/11/21(水) 09:53:25 ID:RdYUib7r
PostgreSQL8.3-beta3
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
【 あなたのタイピングどのくらい!? 】 2007/11/21 配信
制限時間内に表示される画像内の、数字やアルファベットを次々とタイプ入力していく。
あなたのタイプ成功率が刻々と表示されていく。また、その時々のランキングにも表示さ
れていく。都道府県別のランキングもあれば、それぞれ友達と好きなチームを作り競い
合うチーム別ランキングもあって楽しめれる!
また、タイプが成功したものはそのまま、「 国別対抗オンラインクリックゲーム 」の日本
チームのクリック数に貢献される。数々の激戦を戦い抜いてきた日本チームも、現在は
強敵ハンガリーチームに続いて第2位となっている。タイプの練習がそのまま日本チー
ムの優勝に貢献するかも!?あなたもぜひやってみては?
参加するには各種のツールを使う方法もあるが、まずはアクセスするだけでサイトから
簡単にできる「 小町 」をお試しください。なれてきたら各種ツールを試すのも楽しい。
タイプ入力サイトその1「 小町 」
http://f106.dyndns.org/komachi/cgi/acsupporter/supporter.cgi?m=ff 「 国別対抗オンラインクリックゲーム 」については、日本チームのオフィシャルサイトで。
http://clickjapan.jp/ ※上記サイトはすべて「 国別対抗オンラインクリックゲーム 」日本チームの有志の
方達の運営で、すべて無料です。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
947 :
NAME IS NULL :2007/11/21(水) 21:55:29 ID:wDK2HCC/
8.3 楽しみではあるんだけど、HOTが革新的なだけに不安。。。 だれかベータ版使った人います?
948 :
NAME IS NULL :2007/11/21(水) 22:15:14 ID:uCKeYZ7l
>> 947 使ってるけど、HOTはすごすぎ。 VACUUMいらねってぐらいゴミがでない。
調べてるかぎりではそうだと思うんだけど Vistaでは稼動しないよね?
953 :
NAME IS NULL :2007/11/22(木) 04:36:28 ID:Vex/ynnt
pgpool-II 2.0ってWinにも対応してるのでしょうか? いずれ、レプリケーションを使用したいので、 Win版からLinux版に移行しないといけないかもしれませんが、 移行するのは比較的簡単ですかねぇ? Linux版ってコンパイルしてからの導入になるんですかねぇ?
954 :
952 :2007/11/22(木) 04:43:55 ID:???
ぐぐったらインスト方法が書いてあるサイト見つけました(;´Д`) おさわがせしますた・・・
>>952 できるよ。ユーザー作成にちょっとコツがいる
winでポスグレ使おうとは思わんな。
そうか オレはあらゆるやつに入れてる。 WinはpgAdminIIIのついでに入れたが、これだけでクライアントもサーバも 一通り動いてるので、テストにちょうどいいや。
959 :
NAME IS NULL :2007/11/22(木) 15:24:39 ID:lCln3Y5O
psql で現在接続しているユーザ名を表示するにはどうしたらいいですか? Oracle の sqlplus で言う "show user" を psql でやりたいのです。
すみません。初歩的な質問で申し訳ないのですが教えてください。 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 = ? の様に親に子のテーブルを結合する場合ではどちらが効率がいいのでしょうか? またどちらも変わらない場合、どちらで書くのがオススメでしょうか?
>>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);
のような書き方をするときはある。
>>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が効くので問題ないのですが・・・
963 :
961 :2007/11/22(木) 22:24:30 ID:???
>>962 おしいな。
CRATE INDEX i_zip_mst1 on zip_mst ((zip3||zip4));
964 :
NAME IS NULL :2007/11/22(木) 23:35:36 ID:J03+/NIo
>>953 pgpool-IIはバグが多めな印象なんで、pgpoolから試してみると良いかと。
965 :
age :2007/11/23(金) 00:18:34 ID:lvB9rw0J
974 :
NAME IS NULL :2007/11/27(火) 03:23:15 ID:Vq1CXYEu
PostgreSQLのデータベースの内部構造(SQLの具体的な実現方法)を 解説している書籍はありませんか?
979 :
NAME 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
>>979 limit offset使いながら細かくデータ取得&書き出しすればOK。
981 :
NAME IS NULL :2007/11/28(水) 16:39:25 ID:4JPP6L4V
>>980 回答ありがとうございます。さっそく試してみます。
ちなみにメモリのほうですが、8.2.5で1G以上のsharedが設定できないのは仕様
でしょうか?
または、Linuxの場合shmmaxで1プロセスで使用できるメモリのMAXが制限されて
いたので、同様な制限がWindowsのどこかであるのでしょうか?
Windows(32bit版)だとアプリは2Gまで使えると聞いたことはあるのですが・・。
必死に調べたのですが見当たらず、重ね重ねすみませんが後学のためこのあたり
ご存知の方がいたらご教授お願い致します。
>>979 COPY か CURSOR+FETCH を使うべし。psql なら FETCH_COUNT。
結果をすべていったんメモリ上に保持しようとするので、
結果が 2GB を超えるとでメモリ空間使い切ってエラーになる。
ストリーム的に取り出す COPY か、小分けに取り出す FETCH が適している。
取得する側(クライアント)のメモリ消費の問題なので、
shared_buffers などサーバ側の設定は関係ない。
>>980 LIMIT OFFSET はこの目的には効率が悪すぎる。
983 :
NAME IS NULL :2007/11/29(木) 15:04:57 ID:5OSGHAYb
>>982 ありがとうございます。サーバ側の設定は関係ないのですか。
とりあえずこちらもやってみます。
984 :
NAME IS NULL :2007/11/29(木) 22:17:55 ID:lVNkhgwU
>>974 JPUGの分科会あたりにその類の文書って転がってないかな?
最新版には追随してはないだろうけど。
987 :
NAME 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) // 要素全体で抽出
「特定の配列要素に検索をかける」だと、前者になりそうですが、文脈からすると後者に思え、
どう解釈すべきか迷っております。
pay_by_quarter[2] = 10000 だべ 配列使ったら負けかな、と思ってるが結構機能あるんだな。
989 :
NAME IS NULL :2007/11/30(金) 16:19:23 ID:/tqK65U/
そうすると、 「配列の要素とみなされるそれぞれの項目を行に持つ」って文が不思議じゃないですか? 行 → 列 なら、分かるのですが。 それとも、とういう設計もアリなんでしょうか?
>>989 いくつあるかわからないのに列にできないだろ
アリというか、普通こうする。
「特定の配列要素」という事は、要素数は固定という意味じゃないの?
特定の要素というのが固定ならそもそも配列にしないでしょうね
993 :
NAME IS NULL :2007/11/30(金) 19:21:58 ID:/tqK65U/
>>991 私も同じく考えました。
配列ではなく、連想配列なら意味が分かるのですが。
「特定の配列要素に検索をかけることは」は 「配列内を検索することは」くらいに読み替えるべし。ANY のほうで正解。 原文は searching for specific array elements なのだが、 specific には大して強調する意味合いはない。 つまり、「配列を使う前に、第一正規化を検討せよ」って書いてあるだけ。
995 :
NAME IS NULL :2007/11/30(金) 21:39:09 ID:/tqK65U/
次スレって PostgreSQL Part 5 でいいのかな?
.
.
1000ならジュースでも飲むか
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。