PostgreSQL Part.6
レス数が1000を超えています。これ以上書き込みはできません。
0001NAME IS NULL
2008/10/18(土) 17:33:37ID:???●関連サイト
PostgreSQL 本家
http://www.postgresql.org/
日本PostgreSQLユーザ会
http://www.postgresql.jp/
ドキュメント
http://www.postgresql.jp/document/current/html/
ダウンロード
http://www.postgresql.jp/PostgreSQL
pgFoundry
http://pgfoundry.org/
●前スレ
PostgreSQL Part.5
http://pc11.2ch.net/test/read.cgi/db/1196512717/
0002NAME IS NULL
2008/10/18(土) 17:34:37ID:???PostgreSQL 2テーブル目 (WebProgから派生)
http://pc8.2ch.net/test/read.cgi/db/1056944337/
PostgreSQL & pgsql-jp ML 3テーブル目
http://pc11.2ch.net/test/read.cgi/db/1079771059/
【Windows】 PostgreSQL8 Part.1 【対応】 (実質part4)
http://pc11.2ch.net/test/read.cgi/db/1102247223/
PostgreSQL Part.5
http://pc11.2ch.net/test/read.cgi/db/1196512717/
●関連過去スレ
■ PostgreSQLのことならここで聞け ■ (初心者part1)
http://pc8.2ch.net/test/read.cgi/db/1056960249/
■ PostgreSQLのことならここで聞け ■ (初心者part2)
http://pc8.2ch.net/test/read.cgi/db/1091523132/
PostgresSQLについて語ろう (雑談part1)
http://pc8.2ch.net/test/read.cgi/db/1056992724/
PostgreSQLについて語ろう where OID=2::oid (雑談part2)
http://pc8.2ch.net/test/read.cgi/db/1136805513/
●関連スレ
2ch検索
http://find.2ch.net/index.php?STR=PostgreSQL
WebProg/PostgreSQL 2テーブル目
http://pc11.2ch.net/test/read.cgi/php/1047317680/
0003NAME IS NULL
2008/10/20(月) 01:03:45ID:???PostagerSQLって………
0004NAME IS NULL
2008/10/20(月) 01:17:34ID:???PostgreSQLという名称(読みにくいだったか、呼びにくいだったか忘れた)を理由に挙げていて、
変更しないか? って話しが出てたよねぇ。
日本ではソコソコ普及しているので名称を理由にするのはおかしいと
石井氏らは名称変更に反対していたようだけど、その後どうなったんだろう。
0005NAME IS NULL
2008/10/20(月) 01:24:27ID:???BestSQLとかFastSQLみたいなw
調べてみたらSuperSQLは実在するのな…
0006NAME IS NULL
2008/10/20(月) 03:16:39ID:???0007NAME IS NULL
2008/10/20(月) 04:24:03ID:???難しいな
0008NAME IS NULL
2008/10/20(月) 05:12:02ID:???エスキューエルにしろシークェルにしろ、全体的に長ったらしくなる。
どうせならPogitとかPgrexみたいなのをきぼん。
0009NAME IS NULL
2008/10/20(月) 07:18:49ID:???Oracle,DB2,infomix,Sybase,HiRDB,Firebird
だぜ他は
0010NAME IS NULL
2008/10/20(月) 07:36:33ID:???OracleとかDB2ってSQLより歴史あるじゃん。って、DB2がSQLの始まりか。
で、10年ぐらい前なら「問い合わせ言語にSQLを採用」って文句があったりして
でも今なら、わざわざことわりを入れなくてもって意味。
0011NAME IS NULL
2008/10/20(月) 07:41:21ID:???ザ・データベース
ソースネクスト風
驚速データベース
小林製薬風
データベース置くだけ
0012NAME IS NULL
2008/10/20(月) 08:52:27ID:???PostgreSQLて名前が怪しそうに思えて
MySQLで勉強始めた俺が居ます
0013NAME IS NULL
2008/10/20(月) 10:01:02ID:???0014NAME IS NULL
2008/10/20(月) 10:05:44ID:???データベース置くだけに一票。
でもカスタマイズ出来無そうw
0015NAME IS NULL
2008/10/20(月) 16:09:02ID:???話がないようですが、ここにいらっしゃる方たちが経験的に思った
「他と比べてPostgreSQLはこうだと思った」という意見を
聞きたいです。良いところ、悪いところ含めてお願い致します。
0016NAME IS NULL
2008/10/20(月) 16:34:55ID:???Oracleと較べてだけど、Linuxで使うには手軽、学習コスト少ない、
webの情報が多いのはいい。でもエンタープライズ系は情報少ないし、
使ってる人も少ないんだろうなって思う。そもそもキャッシュ2GB以上
設定しても性能が上がらないとかちょっと・・・って感じ。
突然死してデータ壊れたときにチェックポイントとアーカイブログから
データ復活させる方法とかOracleならサポートに聞けば一発だけど
Postgresだと「できるの?できないの?自分で調べろって?復旧予定時刻が
予測できません。」ってなる。だから定期バックアップとってれば
なんとかなるようなシステムでしか使わない。
データ復活の話はあくまで例で実際には壊れたことないんだけどね。
0017NAME IS NULL
2008/10/20(月) 17:06:38ID:???前スレで質問してた人も居たpgpool-IIについてなんだけど、仕事で導入してる人って
どれぐらい居る?
今色々調べえてるんだけど、レプリケーションモードでSELECTを負荷分散させると、
待機系ノードの切り離しってノードダウン時しかない気がするんだけど・・・
無理やりINSERTで各ノード間でエラーを発生させると以下の様なメッセージが出る。
ERROR: pgpool detected difference of the number of update tuples
HINT: check data consistency between master and other db node
もう更新件数ずれてるって解ってるんだからスレーブ切り離してくれても良いのに。
replication_stop_on_mismatch っていうパラメータもSELECT負荷分散しない場合のみ
しか有効にならない(意味がない)っぽい。
色々ググったけど、公式READMEでも突っ込んだ内容が見つからない。
もう少し「出来る」「出来ない」を突っ込んで書いて貰えたほうがいいと思うんだけどな。
0018NAME IS NULL
2008/10/20(月) 17:15:07ID:???MLで聞けば即答だろそんなもの
0019NAME IS NULL
2008/10/20(月) 17:20:37ID:???0020NAME IS NULL
2008/10/20(月) 19:46:37ID:???・GUIツールが無い分、コマンドを覚えないといけない。
SQLを書くようにした方が、コマンドの履歴が残るので良いという意見もあるが。
・準備や学習としては低価格。
・稼動実績的には負ける。
・VBやAccessなどMSの製品との組み合わせではパフォーマンス的にやや劣る。
0021NAME IS NULL
2008/10/20(月) 21:01:09ID:???0022NAME IS NULL
2008/10/20(月) 21:20:56ID:???・GUIツールの機能が貧弱
・無料
・対応OSが豊富
印象としてはたくさん使われてそう
パフォーマンスはよく知りませんが、
Windows+MSSQL(未調整) >>>>>> Windows+Oracle(社員チューニング)
というケースもあるので、調整次第、環境次第。
0023NAME IS NULL
2008/10/21(火) 00:20:09ID:???元々Microsoftが作ったわけじゃないけど今はMicrosoftが売ってるソフトは出来が良い法則だな
まぁ、シーケンス周りとか、ストアドファンクション、テーブルの継承とかそこらへんの便利さでポスグレの方を好んで使ってるけどさ
0024NAME IS NULL
2008/10/21(火) 02:41:10ID:???PostgreSQLはバキュームしなくてよくなったというのがすごく大きいと思う。
0025NAME IS NULL
2008/10/21(火) 11:54:35ID:???全部間違いって何処が間違い?
PostgreSQLを主語にして読むんだろ?
0026NAME IS NULL
2008/10/21(火) 12:01:26ID:???0027NAME IS NULL
2008/10/21(火) 12:44:54ID:???→GUIツールある
・準備や学習としては低価格。
→低価格じゃなく無料
準備や学習に限らず実運用でも無料
・稼動実績的には負ける。
→SQL Serverのシェアが高いのはエンタプライズ分野に限った話
中小サーバやレンタルサーバなども含めると
稼働台数としてはオープンソース系DBの方が数が勝る
・VBやAccessなどMSの製品との組み合わせではパフォーマンス的にやや劣る。
→場合による
0028NAME IS NULL
2008/10/21(火) 13:13:21ID:???>>22
0029NAME IS NULL
2008/10/21(火) 13:16:19ID:???autoでしてるだけじゃね?
0030NAME IS NULL
2008/10/21(火) 13:26:53ID:???ということはしなくて良いじゃん?
0031NAME IS NULL
2008/10/21(火) 14:36:13ID:???走ってしまってバッチ処理完了が遅くなる。そういう場合は
autoをきってバッチ完了後に手動でやるようにセットしておいた方が効率的。
postgresqをちゃんと運用する上でvacuumがどういう処理をしていて
どういう風に使うと効率的なのかはきちんと把握していないと駄目だと思う。
max_fsm_pageの設定とかもあるし。
データサイズが1GB未満のシステムなら誤差の範囲でおさまるかもしれんが。
0032NAME IS NULL
2008/10/21(火) 14:38:41ID:???爆速Random I/OでVACUUMも軽々
いやまだ試してませんが
0033NAME IS NULL
2008/10/21(火) 14:44:57ID:???0034NAME IS NULL
2008/10/21(火) 14:50:16ID:???HDD等への待避とかどうしてる?
電断に備えてどういうことして居るのか詳しく教えて貰えると嬉しい。
0035NAME IS NULL
2008/10/21(火) 15:06:28ID:???CRONで普通に12時間毎のバックアップと、電源断信号でのバックアップ。
0036NAME IS NULL
2008/10/21(火) 17:25:18ID:???コンシューマ向けの2.5'/1.8'SSDは業務で使うにはまだ早いだろ。
信頼性評価でてないし、HDDより書き換え回数が少ない物を
業務用DBみたいに頻繁に書き込む奴に使うのはギャンブル。
業務用SSDは桁が2桁違うしな。
>>33
UPSと組み合わせてこれはいいかもしんない。
うちも検討しよう
0037NAME IS NULL
2008/10/21(火) 22:26:54ID:tlBq0Nw0Npgsqlを使ってPostgreSQLにアクセスするプログラムを作りました
しかし、Npgsqlのライセンスがいまいちよくわかりません
ダウンロードページにはBSDと書いてありますが、GPLと紹介しているページもあります
また、NpgsqlにもMono関係のライブラリが入り込んでいるように見えます
Npgsqlの正確なライセンスの情報を教えていただけると助かります
もしくは、Npgsql以外のPostgreSQLドライバを紹介していただけ無いでしょうか
よろしくお願いいたします
0038NAME IS NULL
2008/10/21(火) 23:50:39ID:???ライセンス気にしてるんだから義務だろ?
ここでもし問題ないよって言われて実は問題あったらどうすんの?
上司に2chでそう言われたとでも言い訳するのか?
0039NAME IS NULL
2008/10/22(水) 00:00:54ID:???カルーイ気持ちで質問したんじゃないのかな
気に食わないんだったらスルーでいんじゃーの
0040NAME IS NULL
2008/10/22(水) 01:05:05ID:???スルーでいいよw
0041NAME IS NULL
2008/10/22(水) 01:07:19ID:???お前はどこからNpgsqlのファイルを落としたのかと問いたい
このページ見て解らないなら技術者辞めた方がいい
http://pgfoundry.org/projects/npgsql/
0042NAME IS NULL
2008/10/24(金) 11:04:49ID:???開発用のツールについてはどうでしょうか?
SQLの実行効率の確認のやりやすさとか、試験用、本番用の
相互移行がやりやすいとかいろいろあるかと思いますが。
あまりいろいろなDBを触ったことが無い私としては、GUIに力を
入れているMS製品がツール方面では強いのかなと思えるのですが。
0043NAME IS NULL
2008/10/24(金) 12:12:41ID:???俺が今まで使った中ではSI Object Browerが一番使いやすかったんだけど、
あれはOracleにしか対応してない。ストアドのステップ実行とかもできて
便利。Oracle標準のツールでもできるんだけど重いし画面も
わかりづらいんだよね
0044NAME IS NULL
2008/10/24(金) 21:59:22ID:???0045NAME IS NULL
2008/10/24(金) 22:01:34ID:???ってか普通にPgAdmin使えばOB以上のことできるけどね
0046NAME IS NULL
2008/10/25(土) 05:03:18ID:???ダンプとかは楽だと思ったけど、複数接続の管理とか
SDI なウィンドウとか、いまいち使い勝手が微妙なんだよね。
Object Browserに慣れちゃってるせいもあるけど。
Postgresの時はさくさく動くCSEを未だに使ってます。
Vistaにしたら右上のフォルダツリーがうまく動かないけど
0047NAME IS NULL
2008/10/25(土) 05:14:20ID:???0048NAME IS NULL
2008/10/25(土) 07:33:04ID:???どこの接続かわかりづらいんだよね。
いやよく出来てると思うけど。
Eclipseで開発してるからプラグインであると便利なんだけど、
DBViewerプラグインてインデックスとかシーケンスとか
見れないんだよなあ
0049NAME IS NULL
2008/10/25(土) 09:54:34ID:???それがオープンソースの思想。
0050NAME IS NULL
2008/10/26(日) 20:37:51ID:TPXcwIfNどなたか、3歳の子供でもわかるくらい、丁寧に説明してくれている
サイト、知りませんか?
まじで、困ってます。どうぞ宜しくです。
0051NAME IS NULL
2008/10/26(日) 21:58:34ID:???構成とか
0052NAME IS NULL
2008/10/26(日) 23:06:20ID:???重ね貼りするなら布テープの方がいいかも
0053NAME IS NULL
2008/10/27(月) 00:14:07ID:???そういうところを障害だという状況の場合は、避けたほうが
良いのかもね。
逆に、製品思想が強い傾向にあるのが、MSとOracleかな。
MySQLはPostreSQLよりかな?
0054NAME IS NULL
2008/10/27(月) 07:56:59ID:???0055NAME IS NULL
2008/10/27(月) 08:48:15ID:???0056NAME IS NULL
2008/10/27(月) 09:28:41ID:???オープンソースに向かってオープンソース思想が強い
製品に向かって製品思想が強いってさぁ・・・
0057NAME IS NULL
2008/10/27(月) 11:08:31ID:???思ったけど、商用製品に向かって製品思想がつおいっていうのを見て
レスする気が失せた
でも>>53の人気に嫉妬して書いてしまった
0058NAME IS NULL
2008/10/27(月) 18:22:53ID:???そのクソったれなレス具合を見ると多分PHPのPostgreSQL用のモジュールもしくは
がPDOが使えてないだけだな!
0059NAME IS NULL
2008/10/27(月) 18:38:34ID:???古いけど
0060NAME IS NULL
2008/10/27(月) 18:49:27ID:???ネットワークやセキュリティ関連でひっかかってるのかわからんとなあ
0061NAME IS NULL
2008/10/27(月) 19:00:20ID:???0062NAME IS NULL
2008/10/28(火) 00:14:22ID:???このリンクがFORBIDDENになるの俺だけ?
0063NAME IS NULL
2008/10/28(火) 00:37:14ID:???0064NAME IS NULL
2008/10/28(火) 00:44:00ID:???もしくはここから好きなのを選びなさいな。
http://wwwmaster.postgresql.org/download/mirrors-ftp?file=%2Fbinary%2Fv8.3.4%2Fwin32%2Fpostgresql-8.3.4-1.zip
0065NAME IS NULL
2008/10/28(火) 13:27:47ID:qPqD78hFそこからさらに同じ行型の引数を取る関数に、その引数を又渡しして
呼ぶ事ができません。文法的な事だと思うのですが、
どうやるか、どなたか知りませんか?
0066NAME IS NULL
2008/10/29(水) 06:36:40ID:???状況がよくわからんが、引数の型を record ではなく、
具体的なテーブル名にしてみてはいかが?
0067NAME IS NULL
2008/10/29(水) 11:13:48ID:zttMKq35具体的なテーブル名でやってます。
-- テーブル定義
create table test_tbl (a int);
-- 関数定義
create or replace function func_test(test_tbl) returns int as '
begin
return func_test2($1);
end;
' language 'plpgsql';
create or replace function func_test2(test_tbl) returns int as '
begin
return $1.a;
end;
' language 'plpgsql';
-- 呼び出し
select func_test(test_tbl.*) from test_tbl;
これで、こんなエラーが出る感じです。
ERROR: there is no parameter $1
CONTEXT: PL/pgSQL function "func_test" line 2 at return
0068NAME IS NULL
2008/10/29(水) 11:15:07ID:???0069NAME IS NULL
2008/10/29(水) 11:24:27ID:???バージョンいくつ?
うちで8.1.4と8.3.1で、それそのままやってもエラーでないけど。
0070NAME IS NULL
2008/10/29(水) 13:25:39ID:???数字の部分が一番大きいのが最新版と聞いたのでこれにしました
0071NAME IS NULL
2008/10/29(水) 15:43:55ID:zttMKq35バージョンは7.4.6、Linuxです。
0072NAME IS NULL
2008/10/29(水) 22:43:53ID:???最新版は8.3.4だよ
>>69はエラーでないって言ってくれてるから8.3.4入れなおしてみたら?
0073NAME IS NULL
2008/10/30(木) 00:47:59ID:???0074NAME IS NULL
2008/10/30(木) 01:37:32ID:???0075NAME IS NULL
2008/10/30(木) 01:40:15ID:???.6とか検証しようないわ
0076NAME IS NULL
2008/10/30(木) 07:57:53ID:???今から7.4で開発ってまずくないか?
007765
2008/10/30(木) 10:54:46ID:???8の環境が手元に無いのですが、7と8では結構文法が違うみたいですね。
ほんとしょーもない文法的な事だと思うんですけど、
諦めつつあります…
0078NAME IS NULL
2008/10/30(木) 12:43:50ID:???0079NAME IS NULL
2008/10/30(木) 12:52:54ID:???たぶん代替手段はあるとは思うけど・・・
008065
2008/10/30(木) 13:05:49ID:???よくやる様な事なんで誰か知っているかなーと思い、
気軽な2chにポストしました。
>>79
ストアドを使わないという事ですか?
その方向で考えてます。今回はバージョンが低かったと。
原理的には出来る事のはずなので、8で出来るなら
7にも方法があるとは思うのですが、資料が無くてお手上げです。
0081NAME IS NULL
2008/10/30(木) 13:07:39ID:???008265
2008/10/30(木) 17:10:34ID:???7のマニュアルは見ていますが(もちろん8も)、
plpgsqlの解説は元々少ない上に、ほとんどプリミティブ型を使って
説明しているので、テーブル型につてはよく分からんのです。
0083NAME IS NULL
2008/10/30(木) 17:14:45ID:???一旦、別の変数に代入してから渡したらどうかな?
008465
2008/10/31(金) 10:21:46ID:???create or replace function func_test(test_tbl) returns int as '
declare
t_row test_tbl;
begin
t_row := $1;
return func_test2(t_row);
end;
' language 'plpgsql';
で、以下のエラーが出ます。
ERROR: syntax error at or near "t_row"
CONTEXT: compile of PL/pgSQL function "f_test_summul" near line 4
代入の構文自体が間違っているのでしょうか?
プリミティブではこれでよいはずなのですが、行型はどうにも…。
0085NAME IS NULL
2008/10/31(金) 11:29:41ID:???create or replace function func_test(test_tbl) returns int as '
DECLARE
in_t ALIAS FOR $1;
begin
だろうけど、、、
0087NAME IS NULL
2008/10/31(金) 13:56:40ID:???うちで7.4.xで試したけど、明らかに>>67とは違うエラーになったよ。
008865
2008/10/31(金) 14:51:53ID:???ERROR: column "in_t" does not exist
と出ます。
どちらも「識別子が見つかりません」的な意味じゃないでしょうか。
0089NAME IS NULL
2008/10/31(金) 15:04:12ID:???009065
2008/10/31(金) 15:07:37ID:???同じにしか思えませんw
識別子が見つからない場合で、$付きならparameter、
.付きならrelation、そうでなければcolumnにしているだけでは?
0091NAME IS NULL
2008/10/31(金) 22:06:36ID:???7.4だと未対応なんだと思う。おとなしくプリミティブに分解するしかないかも。
0092NAME IS NULL
2008/11/02(日) 09:12:18ID:???8.3.4を学習用にインストールしてみました。OSはWindows2000SP4です。
pgAdmin�Vから'任意のSQLクエリーを実行'画面でSQLを打ち込んでみると
日本語のところが'□□□'のように表示されます。また、メッセージタブも□□・・・
と出力されます。インストール時のEncoding(UTF8)、Client(S-JIS)でした。
またpgAdmin�Vの[ファイル]-[オプション]-[全体]-[ユーザ言語]は(ja_JP)日本にしております。
文字化けの解決方法はありますでしょうか。
0093NAME IS NULL
2008/11/02(日) 09:29:37ID:???逆に何か余計なことしたんじゃないのか
0094NAME IS NULL
2008/11/02(日) 10:56:09ID:???0095NAME IS NULL
2008/11/02(日) 12:29:01ID:???コマンドプロンプトからpsqlで実行してたらどうなるの?
多分pgAdminが原因だとは思うけど。
pgAdmin使ったことないからわからん
0096NAME IS NULL
2008/11/04(火) 07:23:10ID:asusX69jあんまり大きな修正は無いように見える。GiSTくらいか?
Update time zone in Argentina, Brazil, Mauritius, Syria が真のリリース理由かも。
0097NAME IS NULL
2008/11/04(火) 08:28:19ID:???009865
2008/11/04(火) 11:31:10ID:???試していただきありがとうございます。どうもそうみたいですね。
全くの推測ですが、8から引数にOUT指定が出来るようになった事と
関係があるのではないでしょうか。OUT指定とは即ち参照渡しであり、
また行型はサイズが大きいので参照渡ししか許されない、とすると、
言語的に値渡ししかできない7では、行型の又渡しが出来ないのも
納得できる気がします。
まあ9割方外してるでしょうけど。
0099NAME IS NULL
2008/11/06(木) 20:40:42ID:???毎日300クライアントのアクセス(Delete, Insert)でVACUUMせずに放置してたら
いつの間にかDiskFullに。
やっちまった。orz
0100NAME IS NULL
2008/11/06(木) 21:17:59ID:???0101NAME IS NULL
2008/11/06(木) 21:25:21ID:???cron回しとけば良いのに。
010299
2008/11/06(木) 21:42:56ID:???テスト運用環境だったので2ヶ月近く放置してましたがな。
>>100
まぁDiskも8GBのうち空きが33%とかいうテスト環境なんで。
時間の問題ですね。
>>101
さっき登録しました。
連休明けたら、アーッ! みたいなね。orz
本運用じゃなくて良かった。
とりあえずレポート取って容量の見積もり算出するかな…。
0103NAME IS NULL
2008/11/06(木) 21:51:22ID:???あんまり意味ないよね実際
0104NAME IS NULL
2008/11/06(木) 21:54:40ID:???とか言ってみるテスト。
0105NAME IS NULL
2008/11/06(木) 22:23:01ID:???PostgreSQLは物理ディスク空いてりゃそれでいいから、
必死に工数掛けて見積もりする意味はあんまないね。
昔のOracleだと領域作ってアタッチしなきゃならんかったから必須だったけど。
0106NAME IS NULL
2008/11/07(金) 00:21:05ID:???pgAdminIIIなんですが、GUI上で、一旦定義したテーブルの列を修正・追加
したり、順番を入れ替えることは可能なのでしょうか。
右クリックから定義を保存してエディタでCREATE文を書き換え、テーブルを
削除してから定義を実行すればテーブルを作り直せるというのはわかりました。
なんというか、MS-ACCESSみたいに簡便になるとよいのですが。
0107NAME IS NULL
2008/11/07(金) 00:45:33ID:???それでもマウスで操作できないと嫌かい?
0108NAME IS NULL
2008/11/07(金) 03:06:04ID:???実は管理テーブル加工すれば順序変更できるけどお勧めできない
0109NAME IS NULL
2008/11/07(金) 06:07:33ID:???MS製品は順番変えられるので人間に優しいね。
postgresだとテーブルダンプして、順番変えて、食わせてる。
つまり、同じくDROP→CREATEやってる。
0110NAME IS NULL
2008/11/07(金) 14:43:31ID:???S2JDBC-Genとか
コマンドライン操作でJava知らないと使えないけど
0111NAME IS NULL
2008/11/07(金) 21:10:41ID:???それはさておき、結局DROP CREATEをやってるようにしか見えたんだけど何が違うの?
0112NAME IS NULL
2008/11/07(金) 23:28:38ID:???0113NAME IS NULL
2008/11/07(金) 23:33:27ID:???まぁバックアップ→DROP→CREATE→リストアを自動でやるだけなんだけどね
目的が達成できるなら中身はどうでもいい気がするけど
0114NAME IS NULL
2008/11/09(日) 01:45:06ID:???バキュる
バキュり
バキュった
バキュられた
バキューン
今度仕事で使わせてもらう。
まぁ、使ってるのは原則8.3系だから意図的にバキュる事はあんまり
ないんだけど
0115NAME IS NULL
2008/11/09(日) 04:05:18ID:???0116NAME IS NULL
2008/11/09(日) 16:13:26ID:???0117NAME IS NULL
2008/11/09(日) 22:33:55ID:???0118NAME IS NULL
2008/11/10(月) 17:52:33ID:WZ408Xm8postgres7.2.4環境です。
顧客IDと日付をキーとして、一日一顧客一レコードで管理しているマスタがあります。
データ構造のイメージとしてはタイムカードのような感じです。
日付マスタという物は存在せず、データは管理画面で日付情報と共に作成指示をした時点で、
顧客IDと日付のキーで挿入されます。
上記前提で、任意の顧客が、タイムカードを押していない期間直近○日のリストを
得たいのですが、それにはどういう手法が考えられますでしょうか。
ニュアンス的には、
SELECT 日付配列.日付 FROM (特定期間の日付配列)
WHERE 日付配列.日付::date NOT IN (SELECT マスタ.date::date FROM マスタ WHERE 顧客ID=1)
ORDER BY 日付配列.日付 DESC;
みたいな事がしたいのですが…。
例えば、postgresのsql中で配列を定義して、それをテーブルのように
扱うことは出来ないんでしょうか。
('2008-10-1'::date..'2008-12-31'::date みたいなイメージ)
または、何か方法がありましたらご教示ください。
宜しくお願いしますm(_ _)m
0119NAME IS NULL
2008/11/10(月) 18:24:12ID:???> 例えば、postgresのsql中で配列を定義して、それをテーブルのように
> 扱うことは出来ないんでしょうか。
> ('2008-10-1'::date..'2008-12-31'::date みたいなイメージ)
generate_series関数を使う。
ex.) 2008-11-01から30日分
SELECT '2008-11-01'::DATE + (generate_series||' days')::INTERVAL FROM generate_series(0,29);
で、上で得た表からマスタ分をEXCEPTすりゃ桶なんじゃね。
SELECT * FROM
(SELECT '2008-11-01'::DATE + (generate_series||' days')::INTERVAL FROM generate_series(0,29)) AS T1
EXCEPT
(SELECT マスタ.date::DATE FROM マスタ WHERE 顧客ID=1) AS T2;
0121NAME IS NULL
2008/11/10(月) 22:08:53ID:???0123NAME IS NULL
2008/11/11(火) 11:30:27ID:???select * from a_tbl join b_tbl on (条件1) where (条件2);
select * from (select * from a_tbl where (条件2)) T0 join b_tbl on (条件1);
条件2が a_tbl の列にしか関係しない場合、
後者の方が速度やメモリの面で有利でしょうか?
0124118
2008/11/11(火) 18:34:54ID:???朝からサーバーのデータを壊してしまい、
夕方にやっと昨日の続きにとりかかれました…orz
generate_seriesの件、おっしゃるとおり素の7.2では使えないようです。
使えないかどうか調べてみて、進展があったら結果を書き込みますね。
ご教示ありがとうございました。
0125NAME IS NULL
2008/11/11(火) 22:41:23ID:???コマンドが使えないレベルじゃないことがそのうち起こる可能性もある予感がするけど
0126119
2008/11/11(火) 23:55:18ID:???そういやそんな関数作ったんだっけ、と思い出した。
で、その関数ソースはどこへやったか出てこないが、
generate_seriesの簡易版でこんな感じ。
CREATE FUNCTION generate_serial(INTEGER,INTEGER) RETURNS SETOF INTEGER AS $$
DECLARE
startno alias for $1;
endno alias for $2;
cno INTEGER;
BEGIN
cno := startno;
LOOP
EXIT WHEN cno>endno;
RETURN NEXT cno;
cno := cno +1;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
7.2で動くかどうか知らないけど、とりあえず手元の8.3で確認済み。
細かい引数チェックとかしてないからね。
0127NAME IS NULL
2008/11/12(水) 04:26:02ID:???select * from a_tbl join b_tbl on (条件1 AND 条件2);
こうしてるけど、それが効率的なのかどうかは知らない。
ここでそれの解をえられると何かとありがたいかも。
0128NAME IS NULL
2008/11/12(水) 05:28:58ID:???バージョンによって違うと思うが、プランナやオプチマイザが賢いので
効率は同じだろう。
っていうか、EXPLAIN で調べりゃわかると思うが。
0129NAME IS NULL
2008/11/12(水) 07:59:49ID:???まず間違いなく同じプランになっているはず。
このあたりは昔からPostgresは最適化をがんばってきてた。
条件を分けて与えるとか小賢しいことはせず、↓でよい。
select * from a_tbl, b_tbl where (条件1) and (条件2);
0130123
2008/11/12(水) 12:58:16ID:???select * from a_tbl join b_tbl on (条件1) where (条件2);
select * from (select * from a_tbl where (条件2)) T0 join b_tbl on (条件1);
select * from a_tbl join b_tbl on 条件1 and 条件2;
select * from a_tbl, b_tbl where 条件1 and 条件2;
上記のどれも同じプランになっていました。さすがpostgresですね。
実用としては、条件1のみが結合条件である事を明示するために、
1番目の書き方を使っていこうと思います。
(そうでない場合は当然3番目や4番目の書き方になるでしょう。)
>>127-129さん、ありがとうございました。
0131NAME IS NULL
2008/11/12(水) 17:32:41ID:H/r/LysLPostgreSQLのconfigureを見るとVer.7.3以降は未対応なんでしょうか?
7.2.8をDLしてmakeするとエラーで止まってしまいます。
ODBC接続用のライブラリはどこから入手されてますか?
(クロス環境なのでソースからのmake必須で)
環境:
HOST機 RedHat9
./configure --enable-odbc --with-unixodbc CC=〜
make clean
make
ODBC関連のコンパイルでヘッダー参照出来ず返ってこなくなる
0132NAME IS NULL
2008/11/13(木) 07:58:49ID:???0133NAME IS NULL
2008/11/13(木) 10:15:50ID:???ここから新しいのもっていっては?
0134NAME IS NULL
2008/11/14(金) 01:54:52ID:???ftp://ftp-archives.postgresql.org/pub/source/
0135NAME IS NULL
2008/11/18(火) 19:44:56ID:???あるスキーマに属する全てのテーブルに対して、SELECTのみ許可したいです。
将来そのスキーマにテーブルが追加されても自動的にその許可属性(SELECTのみ)を
持たせたいです。
調べたところ、スキーマに対するGRANTはCREATEとUSAGEしか付与できる権限が
ないようなので、SELECTのみ許可させるにはテーブル単位でGRANTするしか
なさそうで、困っています。
なにか良い方法はありますでしょうか?
0136NAME IS NULL
2008/11/18(火) 21:15:48ID:???0137NAME IS NULL
2008/11/18(火) 23:26:33ID:???「テーブル一覧を取得してGRANTのSQLを作成し、文字列として返す」
みたいなSQLを書けば一括で処理できるかなぁ。
0138NAME IS NULL
2008/11/19(水) 18:29:55ID:???教えていただき、ありがとうございました。
0139NAME IS NULL
2008/11/19(水) 18:32:31ID:???pgAdminIIIでは、データベース or スキーマ or テーブル に、ログインロールの権限を
追加することはできないのでしょうか?
pgAdminIIIにて、データベース or スキーマ or テーブルのプロパティから「権限」タブを
選択し権限を設定しようとすると、権限ロールの欄は「public」しか選択
できません。
SQL文でやらなきゃダメなんでしょうか?
0140NAME IS NULL
2008/11/19(水) 19:15:08ID:???そこの権限はグループロールに対してだけできるみたいね。
0141NAME IS NULL
2008/11/19(水) 20:14:23ID:???ウチがVer1.8.2なので、表記が違うかもしれないけど、以下をオンにすればできるはず。
ファイル→ オプション→設定項目ページの権限のためのユーザー表示
0142NAME IS NULL
2008/11/20(木) 09:07:41ID:???できました!
ありがとうございました!
これで丸2日、悩んでました。
0143NAME IS NULL
2008/11/22(土) 07:36:13ID:???pgpoolIIをLinuxで動作させ、PostgreSQL本体は
LAN接続された2台のWindowsマシン上で動作させる
ことは可能でしょうか?
0144NAME IS NULL
2008/11/22(土) 07:54:13ID:???0145NAME IS NULL
2008/11/22(土) 12:52:55ID:???ありがとう。やってみます。
0146NAME IS NULL
2008/11/25(火) 23:31:19ID:???0147NAME IS NULL
2008/11/25(火) 23:46:16ID:???ALTER DATABASE name RENAME TO newname
で出来るんですね。
0148NAME IS NULL
2008/11/26(水) 03:28:26ID:???実行すればいいじゃん
0149NAME IS NULL
2008/11/26(水) 03:28:59ID:???すまん。疑問文じゃなかったw
0150NAME IS NULL
2008/11/26(水) 22:59:32ID:???どんまいw
0151NAME IS NULL
2008/12/01(月) 18:56:09ID:???とあるテーブルで主キーをintegerにして、その値を自動的に振ってほしいと考えてます
できれば連番になっているとうれしいです
PostgreSQL(SQL)にはsequenceという文があるとのことですが、これをpgAdminIII上で設定することは可能でしょうか?
よろしくお願いいたします
0152NAME IS NULL
2008/12/02(火) 01:43:58ID:???できますよ
0153NAME IS NULL
2008/12/02(火) 02:22:52ID:???pgAdmin3でもserial型を指定すれば桶。
0154NAME IS NULL
2008/12/02(火) 07:58:01ID:???serial型指定してみます
0155NAME IS NULL
2008/12/03(水) 22:25:37ID:???たとえば、webアプリケーションがPostgreSQLへのコネクションをプールしていたとき、一定期間(1日とか)プールされているコネクションが利用されない場合は切断するなどの処理です
よろしくお願いいたします
0156NAME IS NULL
2008/12/04(木) 07:08:19ID:???そのものズバリな機能は無い。そういう機能を持つコネクションプールを使うか、
pg_stat_activity.query_start を見て、1日以上昔の時刻になっている
バックエンドの pid へ kill -TERM するよう cron でも仕掛ける必要がある。
0157NAME IS NULL
2008/12/04(木) 13:40:31ID:???無効は使おうと思って繋いでるのにDB側の判断で勝手に切ったら
その後の最初のアクセスはエラーになるぞ
0158NAME IS NULL
2008/12/04(木) 13:44:48ID:???pgpoolでどうでしょう?
切ったら終了じゃなくて、コネクションの再起動になるけど。
0159NAME IS NULL
2008/12/04(木) 23:41:55ID:???こんな質問した理由ですが、とある仕事でデータベースをMySQLからPostgreSQLにする必要が発生しました
先輩からMySQLは半日くらいで無駄なコネクション切断する機能があるから、Webアプリケーションのコネクションプーリングに細工して、コネクションが勝手に切断されていないかチェックする仕組みを入れていると言われました
そのため、PostgreSQLでも同じ仕組みを入れたかったのですが、よく考えたら、勝手に切断されないなら、コネクション監視をwebアプリでやるのはムダですが、別に動作はしますよね
ありがとうございました
0160NAME IS NULL
2008/12/05(金) 00:48:02ID:???なんだこの嘘情報は
0161NAME IS NULL
2008/12/05(金) 00:52:08ID:???thread_cache_size越えちゃって破棄されてるだけじゃねーの?
確かデフォが1024だからそのシステムはだいたい半日で1024回使われてるってことで
0162NAME IS NULL
2008/12/05(金) 01:26:07ID:???別のDBだったかな?
なんかで、聞いた気がする
0163NAME IS NULL
2008/12/05(金) 03:22:25ID:???8時間がデフォだから半日は嘘ってこと?
わかりにくいよ!
0164NAME IS NULL
2008/12/05(金) 09:24:06ID:???デフォルトは28,800秒=8時間。
0165NAME IS NULL
2008/12/05(金) 19:36:08ID:???(このスレでいいのかな?)
bytea型のフィールドのデータを、PDO経由で取得できません。
下記のコードで、$bytea_data に正しいデータが入りません。
何故なのでしょうか?
$sql = "select <bytea_field> from <bytea_tbl>";
$sth = $dbh->prepare($sql);
$sth->execute();
$sth->bindColumn(1, $bytea_data, PDO::PARAM_LOB);
$sth->fetch(PDO::FETCH_BOUND);
PHPはVer5.2.3, PostgreSQLは8.3.5です。
よろしくお願いします。
0166NAME IS NULL
2008/12/05(金) 19:59:01ID:???0167NAME IS NULL
2008/12/05(金) 20:30:07ID:???あ、そうですね!
PDO経由じゃなくって直接関数を呼んで切り分けしないと、ですね。
会社でないと試せないので、月曜にやります。
結果は来週報告します。
(超早いレスなのに、申し訳ないです)
0168NAME IS NULL
2008/12/05(金) 20:53:51ID:???MySQLはそんな仕組みがあるのか。
PostgreSQLとか他のDBもそういう仕組み準備してるのかな?
0169NAME IS NULL
2008/12/07(日) 15:17:58ID:???0170NAME IS NULL
2008/12/07(日) 17:57:10ID:???0171NAME IS NULL
2008/12/07(日) 18:06:39ID:???気持ち悪いけどライセンス守ってるんなら別に良いんじゃないの?
0172NAME IS NULL
2008/12/08(月) 00:47:51ID:???0173NAME IS NULL
2008/12/08(月) 00:52:00ID:???0174NAME IS NULL
2008/12/08(月) 01:00:45ID:???0175NAME IS NULL
2008/12/08(月) 01:08:25ID:???閾値を設定するのが難しいからとりあえず全部違反って言うのが無難なのだろうな
明らかに住人じゃない人たちによるまとめサイト潰しが流行ってるのもそういう背景があるんだな
0176NAME IS NULL
2008/12/08(月) 01:10:14ID:???別にアフィには見えないんだけどね。
どうしても気になるならこのサイト使わなきゃいいだけじゃん。
0177NAME IS NULL
2008/12/08(月) 01:20:48ID:???0178NAME IS NULL
2008/12/08(月) 03:18:16ID:???アフィの善し悪しはともかくとしてアフィがあるのは誰でも見えると思うんだが…
0179NAME IS NULL
2008/12/08(月) 09:28:52ID:???ただのリンクが付いてるだけにしか見えない。
何の意味があるのかワカランが、SEOなのか?
0180NAME IS NULL
2008/12/08(月) 16:27:49ID:???無料でサーバー貸す代わりにリンクを貼らせるタイプの
0181NAME IS NULL
2008/12/08(月) 21:51:50ID:70eIdlVB列全体を更新したいのですが、以下の文は成功したように見えて、実際には
動きません。
テンポラリに一旦書き込んで、その結果を戻すしかないのでしょうか?
UPDATE table1 SET namae = rtrim(namae);
UPDATE xxx と、成功したかのようなメッセージが出るのですが、select
してみると、空白が右側にきっちり詰まってます。
0182NAME IS NULL
2008/12/08(月) 22:17:36ID:???それでいけるはずだが。
デフォでは半角空白だけみたいなので、
[TAB]とか全角空白には効かないよ。
0183NAME IS NULL
2008/12/08(月) 22:39:13ID:???0184NAME IS NULL
2008/12/08(月) 23:25:44ID:???0185181
2008/12/09(火) 05:12:54ID:???pgadminで見る限りは、半角スペースが詰まっているように見えるのですが。
>>183 その通り、charです。charだとrtrimが動かないのでしょうか?
元の文字列データは、タブ区切りのテキスト形式を読み込んだものです。
テーブルをvarcharで定義し直して、テキストを読み込むと、スペースが
後ろに付かないのは確認しています。
0186183
2008/12/09(火) 05:51:13ID:???http://www.postgresql.jp/document/pg835doc/html/datatype-character.html
ということです。
0187NAME IS NULL
2008/12/09(火) 06:53:21ID:???PHPでPostgreSQLのbytea型へのアクセスについて調査しましたので報告します。
(PHP 5.2.3 + PostgreSQL 8.3.1です)
1.PHPからpg_*関数を使用してbytea型のフィールドの読み書きは問題なく出来ます。
(書き込み時はpg_escape_byteaでエンコード、読み出し時はpg_unescape_byteaで
デコードする必要あり)
2.PHPからPDO経由でbytea型のフィールドの読み書きは、下記の注意が必要です。
(1)書き込み(insert)時は、bindParamの第3引数にPARAM_LOBを指定する。
ex. $sth->bindParam(":data", $data, PDO::PARAM_LOB);
(2)読み出し(select)時は、bindColumnの第3引数にPARAM_STRを指定する。
ex. $sth->bindColumn("data", $data, PDO::PARAM_STR);
同じフィールドなのに読み書きでパラメタが違う・・・
なんかバグっぽいですね(^^;
0188NAME IS NULL
2008/12/09(火) 07:28:00ID:???バグじゃなくて使い方を間違えてるだけ。
"data"列がBYTEA型の場合は
$sth->bindColumn("data", $rsrc, PDO::PARAM_LOB);
$sth->execute();
$data = stream_get_contents($rsrc);
で、ラージオブジェクトのOIDの場合は
$sth->bindColumn("data", $oid, PDO::PARAM_LOB);
$dbh->beginTransaction();
$sth->execute();
$data = stream_get_contents($dbh->pgsqlLOBOpen($oid, 'r'));
$dbh->commit();
が正解。
0189181
2008/12/09(火) 07:28:48ID:???検索用途だと、charとvarcharではヒットするしないがあるのは知っています。
ただ、charになぜrtrimが効かないかが分からないのです。
0190NAME IS NULL
2008/12/09(火) 07:39:31ID:???rtrimが利いた上で、その後でまた空白が追加されているんだよ。
char と varchar の使い分けくらいは考えようぜ。
0191NAME IS NULL
2008/12/09(火) 07:43:01ID:XC+middIrtrimの後から空白を追加しているとは。目から鱗でした。
もっとも、今はvarcharで組み直してあるので、問題はないのですが。
ありがとうございます。
0192NAME IS NULL
2008/12/09(火) 16:42:50ID:???0193NAME IS NULL
2008/12/09(火) 19:21:28ID:???PDO::PARAM_LOBを指定すると、正しいデータを取得できないんですよ。
で、PDO::PARAM_STR ならOKでした。
ヘンでしょ?
だからバグっぽい・・・
0194NAME IS NULL
2008/12/09(火) 20:09:35ID:???どう、正しいデータを取得できないの?
0195NAME IS NULL
2008/12/09(火) 22:56:50ID:???sqlite のこともたまには思い出してあげてください。
0196NAME IS NULL
2008/12/09(火) 23:17:49ID:???Accessは?ねぇAccessは?
0197NAME IS NULL
2008/12/09(火) 23:19:42ID:???それ、SQLって入ってないから。。。
挙げられてないってだけなら桐とかFileMakerとか
0198NAME IS NULL
2008/12/10(水) 05:28:36ID:???200KBくらいのバイナリデータでテストしたが、insertは正しくできるのだが、
selectではサイズが14バイトしか取得できなかったです。
0199NAME IS NULL
2008/12/10(水) 07:53:46ID:???0200NAME IS NULL
2008/12/10(水) 10:16:18ID:???0201NAME IS NULL
2008/12/11(木) 00:26:09ID:???指定すると、shmatがCannot allocate memoryとか言ってきて起動できません。
shmmaxは充分とってあるし(これが原因だと別のエラー出るよね)、shmallもipcsでみると8Gある。
postgres8.2で、OSはRHELの3だったはず。総メモリは4G。
なんかあやしい設定箇所とかあったら教えてください。
0202NAME IS NULL
2008/12/11(木) 00:29:42ID:???何ビットOS??
0203201
2008/12/11(木) 00:31:24ID:???32ビットです。
0204NAME IS NULL
2008/12/11(木) 00:47:10ID:???0205NAME IS NULL
2008/12/11(木) 00:58:18ID:???そのぐらいで限界だよ。
あんまりぎりぎりを狙うと運用中に落ちちゃうぞ
0206201
2008/12/11(木) 01:03:14ID:???shmmaxは3705032704だから…約3500M。
と、>>205ありがとう! 不勉強ですまん…。
OS制限じゃしょうがないので少し下げて遊び持たせます。
やっぱ64bitかー。
0207NAME IS NULL
2008/12/11(木) 05:13:26ID:???0208NAME IS NULL
2008/12/11(木) 07:40:18ID:???0209NAME IS NULL
2008/12/11(木) 12:53:12ID:???0210NAME IS NULL
2008/12/11(木) 12:56:40ID:???DB鯖なんて特に致命的だよあんなの
CPUを予定の倍くらい早いのに替える覚悟じゃないと無理
0211NAME IS NULL
2008/12/11(木) 14:08:16ID:???0212NAME IS NULL
2008/12/11(木) 16:03:38ID:???0213NAME IS NULL
2008/12/11(木) 16:14:32ID:???0214NAME IS NULL
2008/12/11(木) 16:18:06ID:q9vn8l9s時間の値の違いについて、分かる方いらっしゃいますか?
0215NAME IS NULL
2008/12/11(木) 17:17:48ID:???古いデータは見たいけど、運用中のDBに昔のデータも残しておくとパフォーマンス的にもったいない気がしました。
そこで、古いデータは古いデータとして別のDBに移そうと思っています。
しかし、PostgreSQLでは別のDB(同じサーバー内の別DB)にデータを移動する方法がわかりません。
# MySQLでは (データベース名).(テーブル名)で参照できる
INSERT INTO tmp_terminals SELECT * FROM (別のデータベース名).terminals WHERE 〜〜〜
みたいなことをしたい場合はどうしたらいいでしょうか?
0216NAME IS NULL
2008/12/11(木) 17:44:20ID:???よほど変なことをしていない限り、DBサイズが大きくなっても
処理時間はリニアに増えていくわけじゃないぞ。
0217NAME IS NULL
2008/12/11(木) 17:52:25ID:???自分は使ったことないけど、dblink は?
0218NAME IS NULL
2008/12/11(木) 17:58:35ID:???普通では出来ないけど、なんかを使えば出来るみたいなのがあった気が...。
で、同じ鯖ないならDB別けせずにスキーマだけ別けておいた方がいいんじゃね。
それこそ、
INSERT INTO (バックアップ用スキーマ).tmp_terminals SELECT * FROM (本番スキーマ/public).terminals WHERE 〜〜〜
みたいなのが出来るはず。
0219NAME IS NULL
2008/12/11(木) 21:54:58ID:???0220NAME IS NULL
2008/12/11(木) 22:11:18ID:???0221NAME IS NULL
2008/12/12(金) 08:32:56ID:???0222215
2008/12/12(金) 10:36:37ID:???0223NAME IS NULL
2008/12/12(金) 11:44:03ID:???【PostgreSQLウォッチ】第19回 ベータ・リリースを間近に控えたPostgreSQL 8.1
ttp://itpro.nikkeibp.co.jp/members/ITPro/oss/20050722/165140/?ST=oss&P=2
の下半分。
HDDはしっかり食いますが。
0224NAME IS NULL
2008/12/12(金) 14:48:05ID:???0225NAME IS NULL
2008/12/12(金) 18:09:18ID:???0226NAME IS NULL
2008/12/12(金) 18:37:35ID:???公式落ちてるんじゃ駄目だよね
こういう所がポスグレってだめだよなあ
0227NAME IS NULL
2008/12/12(金) 18:58:53ID:???0228NAME IS NULL
2008/12/12(金) 21:23:18ID:???継承のパーティショニング的な使い方だな。
VACUUM の必要性を気にしないんだったら良い選択だと思う。
0229NAME IS NULL
2008/12/15(月) 05:35:40ID:???「日本PostgreSQLユーザ会」は名前の通りユーザーの会だろw
0230NAME IS NULL
2008/12/15(月) 08:55:36ID:???0231NAME IS NULL
2008/12/15(月) 09:07:42ID:???「本体の品質」にはまるで影響はないが、
「日本ユーザ会」は屑であることは間違いない。
0232NAME IS NULL
2008/12/15(月) 09:27:31ID:???>>231
確かにw
0233NAME IS NULL
2008/12/15(月) 15:57:56ID:WEqZVJO5ユニークでさえよければ良いのだから複数のテーブルのprimaryなカラムで共同で1つのシーケンスを
共用しても良さそうなものですが運用上マズーなことってありますか?
0234NAME IS NULL
2008/12/15(月) 16:22:03ID:???そっちの方が手間がかかるけどオブジェクトは減るね。
0235NAME IS NULL
2008/12/15(月) 17:00:33ID:???なにが悪いの?客観的にはクズ呼ばわりするなら自分でやればって
感じなんだけど。日本語の情報があるだけでもずいぶんありがたいじゃん
0236NAME IS NULL
2008/12/15(月) 22:47:11ID:wDeakmV20237NAME IS NULL
2008/12/15(月) 22:52:44ID:???0238NAME IS NULL
2008/12/15(月) 23:29:54ID:???0239NAME IS NULL
2008/12/16(火) 00:48:01ID:???0240NAME IS NULL
2008/12/16(火) 01:43:32ID:???情報を提供されるだけのユーザがそんなこと考えるなんてあり得ない。
どこのコミュニティの方が優れているのかを提示してもらえると参考になるんだけど。
0241NAME IS NULL
2008/12/16(火) 04:39:03ID:???アメリカ主流のOSS界にあって日本人が活躍してる数少ないプロダクトなのに
0242NAME IS NULL
2008/12/16(火) 11:35:17ID:???0243NAME IS NULL
2008/12/17(水) 14:34:52ID:???0244NAME IS NULL
2008/12/17(水) 15:36:25ID:???0245NAME IS NULL
2008/12/17(水) 15:56:58ID:???ODBC汎用でもいい?
0246NAME IS NULL
2008/12/17(水) 16:02:53ID:???今はサーバ仮復旧だから、そっちまで手が回らないのかも。
0247NAME IS NULL
2008/12/17(水) 16:09:00ID:???パフォーマンス?
0248NAME IS NULL
2008/12/17(水) 19:30:09ID:???さっきこれが PgAdminIII の「今日のヒント」に出てきた。
誰だよ入れたの。
(参考)
人生、宇宙、すべての答え - Wikipedia
http://ja.wikipedia.org/wiki/%E4%BA%BA%E7%94%9F%E3%80%81%E5%AE%87%E5%AE%99%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E7%AD%94%E3%81%88
0249NAME IS NULL
2008/12/17(水) 19:43:04ID:???http://www.google.co.jp/search?q=what+is+the+answer+to+life+the+universe+and+everything
vimエディタを使えるなら :he 42 とやってみるのもいい。
0250NAME IS NULL
2008/12/17(水) 19:52:25ID:???Sugeee!! このためだけに久々に Vim 立ち上げたよ!
Emacs はないのかな。調べても見つからん。
0251NAME IS NULL
2008/12/23(火) 20:24:56ID:???LargeObject型
Text型
Bytea型
のどれがいいのでしょうか?
(信頼性、メンテナンス性、速度の面で)
サイズは1データ最大300MB程度です。
0252NAME IS NULL
2008/12/23(火) 20:28:42ID:???それ以前に1つ300MもあるデータをDBに格納してる人はあんまりいないと思われる
あってもせいぜい数メガの画像程度でしょ
0253NAME IS NULL
2008/12/23(火) 20:30:06ID:???DB自体にデータは格納されないでそのデータがあると言うことだけDBに保存されるんだけど
0254NAME IS NULL
2008/12/23(火) 20:34:39ID:???メモリ何ギガも必要になる
ラージオブジェクト(oid)じゃないと無理
ただしラージオブジェクトの場合、DB鯖が分離してると使えない
バッチか何かでDB鯖にファイルコピーする必要がある
0255NAME IS NULL
2008/12/23(火) 21:14:48ID:???DBにはパスだけ入れておくのが一般的。
0256NAME IS NULL
2008/12/24(水) 15:02:20ID:???> DBにはパスだけ入れておくのが一般的。
それ素人が良くやる最悪の設計のひとつ
こういう設計を一般的とか言っている時点で >>255 は素人か
周りに迷惑かけまくってる事に自分で気がつかないバカのどちらか
なにが悪いって、こんな事をすれば検索もバックアップもろくに出来なくなるわけよ
で、それが満足に出来ないならわざわざDB使う必要ないじゃん?って話になる
初めっからファイルで格納してfindなりGoogle Desktopなり好きな物使って探せよ
DBは使うな、使おうとすら思うな
そんな設計のDBを保守してゆく事がどれほど大変なことか……
つか、そんな事も分からない >>255 はレスすんなって
0257NAME IS NULL
2008/12/24(水) 15:09:51ID:???300MBをBYTEAで入れてるのかw
0258NAME IS NULL
2008/12/24(水) 15:17:59ID:???0259NAME IS NULL
2008/12/24(水) 15:49:48ID:???検索できない:そのデータの中身で検索しないのは前提条件だろう。
バックアップできない:これは確かに。
0260NAME IS NULL
2008/12/24(水) 16:26:40ID:???ファイルの内容文を検索する事?
バイナリのファイルの場合はどうするの?
0261NAME IS NULL
2008/12/24(水) 19:31:34ID:???0262NAME IS NULL
2008/12/24(水) 21:47:27ID:???いや、だから、検索する必要がないという前提がおけるなら、
ファイル保存でもいいよねっていうことだろ >>259 が言いたいのは。
読解力ないのか
0263NAME IS NULL
2008/12/24(水) 22:41:18ID:???スピードはどよ
0264NAME IS NULL
2008/12/24(水) 22:45:59ID:???少しは考えろ。
300MBのファイルの検索って、どうやってやるつもりだい?
byteaとしてもラージオブジェクトとしてもインデックスを張りようが無い。
検索するならば特徴量なり概要のみ抜き出してテーブルに格納すれば良い。
「バックアップできない」ってのも意味が分からん。
普通にファイルシステム層でバックアップをとればいい。
300MB規模のデータが複数入る可能性のあるDBを、論理バックアップでまかなうつもりかい?
もし難点を指摘するならば、トランザクションやリカバリ管理が
自前になるのが面倒なことだろう。まったく本質を外した反論だ。
0265NAME IS NULL
2008/12/24(水) 22:57:15ID:???>>256が「検索も――碌に出来なく」云々書いてるから、
検索って何?ってレスしてんですよ。
そもそもDBに巨大ファイルの検索なんて責任範囲外だろ。
そんなの横断的な全文検索エンジンとかの機能じゃねーの?
0266NAME IS NULL
2008/12/24(水) 23:04:24ID:???>>262 は >>256 に対する突っ込みだったか。すまん失礼。
だがちょっと離れすぎだろアンカーかけよ
普通直前へのレスだと思うだろ
0267NAME IS NULL
2008/12/24(水) 23:05:05ID:???o >>260
0268NAME IS NULL
2008/12/24(水) 23:19:07ID:???http://mikilab.doshisha.ac.jp/dia/research/report/2003/0606/001/report20030606001.html
当然byteaよかラージオブジェクトで突っ込んでoidだけ管理した方が速い
100Mで2分くらいだから普通のファイルシステムよりは遅いかね
0269NAME IS NULL
2008/12/24(水) 23:20:05ID:???>>262
>読解力ないのか
>>266
>だがちょっと離れすぎだろアンカーかけよ
>普通直前へのレスだと思うだろ
こんな感じでリアルに豹変されたら信頼なんて出来ないよ。
0270NAME IS NULL
2008/12/24(水) 23:43:20ID:???0271NAME IS NULL
2008/12/25(木) 00:03:53ID:???「誰も指摘してくれない」って意味合いがあるんだよね。
わざわざ一言断って指摘してくれてるのに駄目な人ですね。
0272NAME IS NULL
2008/12/25(木) 02:13:19ID:???0273251
2008/12/25(木) 05:44:49ID:???264の発言が正論と思いました。
264の文中で難点と言われたトランザクションやリカバリ管理は
確かに問題になりますね。
トランザクションは一旦開発してしまえば後々問題になることは
なさそうですが、バックアップ、リカバリ管理、メンテ面はよく考慮
しておかないと後々問題になりそうですね。
数MB程度のデータなら、ファイル保存ではなくbytea型がお手軽で
良いんでしょうね。
0274NAME IS NULL
2008/12/26(金) 20:27:41ID:???ttp://powergres.sraoss.co.jp/manual/onWin/V50/ja/admin/others.html
analyzeってvacuum --analyzeとは異なるものなのでしょうか?
0275NAME IS NULL
2008/12/27(土) 03:28:07ID:???処理(負荷)そのものはまったく同じ。
統計情報の更新の仕方がちょっとだけ違って、
連続して実行するよりは若干精度が高まる。
0276NAME IS NULL
2009/01/01(木) 04:40:14ID:???274じゃないけど。
analyze はanalyzeだけ。
vacuum --analyze はvacuum後analyze。
の違いだけかと思ってたけど、
> 統計情報の更新の仕方がちょっとだけ違って、
> 連続して実行するよりは若干精度が高まる。
analyzeそのもののがちょっと違うってこと?
0277NAME IS NULL
2009/01/01(木) 11:40:11ID:???処理はまったく同じ。行数情報の更新がちょっとだけ違うけど微々たる差。
・VACUUM → 正確な行数が分かる。
・ANALYZE → データ分布と行数の概算が分かる。
・VACUUM ANALYZE → 正確な行数と、データ分布の概算が分かる。
0278NAME IS NULL
2009/01/06(火) 13:24:05ID:vCVtLuPS何らかの効果的なanalyzeの手法を利用できるってことかなあ
0279NAME IS NULL
2009/01/08(木) 07:39:37ID:fq3yDhNYポスグレでviewを定義した後、viewを構成している列の情報を取得したいの
ですが、どのようにすれば良いのでしょうか。
目的は、viewで定義した内容を、webブラウザ上で入力画面として再現
したいわけです。
viewを構成している列がわかったら、PHPで入力フォームを自動生成
できるのではないか、と思ったわけです。
0280NAME IS NULL
2009/01/08(木) 08:22:01ID:???具体的なやり方まで調べてないけど、ヒントを2点ほど。
1) テーブルとかビューなどの定義内容はシステムカタログ(pg_*)のテーブルに登録されてる。
2) psql を -E オプションで起動して \d viewname と打てば、ビュー(viewname)の定義内容を
問い合わせするSQLが表示される。
\d以外にもpsqlで使えるコマンドがどのようなSQLで問い合わせているのかわかるので、いろいろ参考になるよ。
0281NAME IS NULL
2009/01/08(木) 11:07:05ID:???select *
from pg_attribute
join pg_type on pg_attribute.atttypid = pg_type.oid
where attrelid =
(select relfilenode
from pg_class
where relname = 'ビューの名前')
order by attnum
とりあえず*でやってみたが、列の選択は任せる。
0282NAME IS NULL
2009/01/08(木) 23:26:02ID:???それちょっと間違い。relfilenode != pg_class.oid だよ。
select *
from pg_attribute, pg_type, pg_class
where attrelid = pg_class.oid
and atttypid = pg_type.oid
and relname = 'ビューの名前'
order by attnum
がよいと思う。単にビューの名前で絞り込むなら regclass を使うと楽。
select attname, attnum
from pg_attribute, pg_type
where attrelid = 'ビューの名前'::regclass
and atttypid = pg_type.oid
order by attnum
0283NAME IS NULL
2009/01/09(金) 15:11:59ID:McdBsPt0select now() + ( 1 || ' year' );
では無理でした
0284NAME IS NULL
2009/01/09(金) 15:13:48ID:???つまるところ日付と整数どっちなんたよ
0285NAME IS NULL
2009/01/09(金) 15:35:03ID:???intervalに明示的に型変換するのがポイント。
0286NAME IS NULL
2009/01/09(金) 15:57:26ID:???ありがとうございました
0287NAME IS NULL
2009/01/10(土) 10:25:40ID:???でも良いかも。
0288NAME IS NULL
2009/01/13(火) 19:01:02ID:???SJISエンコードのデータベースを作成したいのですが
lc_ctypeがjapanese_japan.928ですとエラーになってしまいます。
ロケーションをOSの環境変数で変えれば良いとまで調べたのですが
具体的に環境変数に何と書けば良いでしょうか?
OSはWindoowsXPです。
0289NAME IS NULL
2009/01/13(火) 20:11:00ID:???0290NAME IS NULL
2009/01/13(火) 20:55:10ID:???lc_ctypeがjapanese_japan.932(=Shift_JIS)の間違えでした。
localeがSJISなのに何故SJISエンコードのDBが作成できないのでしょうか?
エラーが起こりました:ERROR:SJIS is not a valid encoding name
と表示されてSJISエンコードのDBが作成できないのです。
0291NAME IS NULL
2009/01/13(火) 21:04:05ID:???CREATE DATABASE test WITH ENCODING 'SJIS';
ERROR: SJIS is not a valid encoding name
SQLステート:42704
になりました。
エラーコード調べたら下記のようになってましたが、どうすれば
SHIFT_JISエンコードのDBって作成できるのでしょうか。
42704 未定義オブジェクト undefined_object
0292NAME IS NULL
2009/01/13(火) 22:29:22ID:???まさか7とかじゃないよな?
0293NAME IS NULL
2009/01/13(火) 23:45:24ID:???ひょっとして、データベース本体もSJIS対応になってたりするの?
>>291
俺の記憶では、SJISが指定できるのはクライアントのみで、データベース本体は無理。
0294NAME IS NULL
2009/01/13(火) 23:54:24ID:???まだ解決できてないですが、データベースエンコードが問題じゃないことが分かってきましたので、
SJISエンコードの問題は保留ということでお願いします。すみませんです。。。
また知っている&経験ある方がおりましたら教えていただきたいのですが、現在PHP+Openid+Postgresqlで
開発してます。そこでOpenidのライブラリで、認証情報の格納先をPostgressqlにするとエラーとなってしまうのです。
DBのエンコードが問題かと思っていたのですが、原因は他にあるらしく下記SQLの実行箇所でエラーとなっています。
1.PostgresDBの認証保持用テーブル「oid_associations」に「bytea」型のフィールド「secret」があり、次のSQLを実行しています。
INSERT INTO oid_associations (server_url, handle, secret, issued, lifetime, assoc_type) VALUES (?, ?, '!', ?, ?, ?)
2.プレースホルダーの内容は1個目の引数から
"https://openid.excite.co.jp/・・・"::text ,
"9wePj・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・6c8fac"::text ,
'\152\31\310\133・・・・・・・・・・・・・・・・・・・・・・・・・・・\113\41'::bytea ,
123・・・・・45::integer ,
12・・・・00::integer ,
HMAC-SHA1::text
となっており、引数3個目の'\152\31\310・・・・'をbytea型列に値を入れるところで失敗してるようです。
次のSQLを単体で実行してもエラーになるのですが、エラーの原因がいまいちよく分からずな状態です。
update oid_associations set secret='\152\31\310';
update oid_associations set secret='\152\031\310';
update oid_associations set secret='\\152\\031\\310';
byteaは 3 桁の 8 進番号が入るとPostgresqlマニュアルにありましたが「\31」なる2桁の値が混ざっていたりして
これをどうすればいいのか迷っています。何か良きアドバイスありましたらお願いします。
0295NAME IS NULL
2009/01/14(水) 00:46:14ID:???update oid_associations set secret=E'\\152\\031\\310';
> byteaは 3 桁の 8 進番号が入るとPostgresqlマニュアルにありましたが「\31」なる2桁の値が混ざっていたりして
スレチネタ。2桁の物を3桁にするだけだと思うけど、
そもそもなんで2桁の物が出てくるのかな? エスケープに使用する関数を間違ってるとか。
0296NAME IS NULL
2009/01/14(水) 00:49:29ID:???http://www.postgresql.jp/document/pg830doc/html/datatype-binary.html
これみるとEつけてってなってるよ
0297NAME IS NULL
2009/01/14(水) 04:12:54ID:???pg_escape_byteaとpg_unescape_byteaを使って
検証スクリプトを作るしかないんじゃね?
0298NAME IS NULL
2009/01/14(水) 06:11:31ID:xfxOZTQeありがとうございます。
SQLを下記のようにしたらbyteaに値を入れることに成功しました。
どおやらライブラリにバグがあるようですので書き換えてみたいと思います。
(失敗)
update oid_associations set secret='\152\31\310';
update oid_associations set secret='\152\031\310';
update oid_associations set secret='\\152\\031\\310';
update oid_associations set secret=E'\152\31\310';
update oid_associations set secret=E'\\152\\31\\310';
update oid_associations set secret=E'\152\031\310';
(成功)
update oid_associations set secret=E'\\152\\031\\310';
マニュアルが古いかったようで7.2のマニュアル見てました・・・
http://www.postgresql.jp/document/pg721doc/user/datatype-binary.html
0299NAME IS NULL
2009/01/20(火) 10:27:21ID:???ODBCとNpgsqlではどちらが一般的でしょうか?
またはそれ以外に何かメジャーなものはありますか?
0300NAME IS NULL
2009/01/20(火) 12:15:37ID:???昔はlibpq.dllを直接呼ぶこともやったかな。
0301NAME IS NULL
2009/01/21(水) 09:57:56ID:???ありがとうございます。
0302NAME IS NULL
2009/01/21(水) 18:34:43ID:???>SELECT SQL_CALC_FOUND_ROWS * FROM xxxx limit 10;
>SELECT found_rows();
やりたいことは、limit による制限のかかった結果の行数ではなく、limit がかかっていない場合の全体の行数を取得です
マニュアル見ても、ぐぐってみても「そんな機能はない」で結論ついてる感じなのですが・・・
0303NAME IS NULL
2009/01/21(水) 19:48:12ID:???postgresは同じ条件でcount(*)するしかないっぽいな
0304NAME IS NULL
2009/01/21(水) 20:34:03ID:???どうしてもスキャン1回で済ませたいなら、
カーソルでLIMIT件だけ先に取得して、あとは末尾までシークって感じかなぁ。
0305302
2009/01/22(木) 13:05:36ID:???ないんでしょうねぇ・・・
2回投げるか、全部とってlimit分だけ返すか二択ですね
レスありがとうございました
0306NAME IS NULL
2009/01/22(木) 13:10:51ID:???内部では2回呼んでるのも同じだろうし
0307NAME IS NULL
2009/01/22(木) 14:00:00ID:???>全部とってlimit分だけ返すか
この選択肢はなしだと思います
0308NAME IS NULL
2009/01/22(木) 14:57:29ID:???countするだけなら結合しなくていいテーブルとか出てくるだろうし、速度もいつも問題にならないくらいに収まる
0309NAME IS NULL
2009/01/23(金) 09:13:09ID:???そっちをデフォルトにするにはどうすればいいですか?
0310NAME IS NULL
2009/01/23(金) 09:30:14ID:???0311NAME IS NULL
2009/01/23(金) 09:32:12ID:???はい。そうです!
0312NAME IS NULL
2009/01/23(金) 13:43:31ID:???UTF-8のほうがいいですか?
0313NAME IS NULL
2009/01/23(金) 13:53:30ID:???自分が必要な文字コードにするまで
0314NAME IS NULL
2009/01/23(金) 18:47:02ID:???文字コードに詳しい知人が言ってた。
ベストではなく無難ね。
反論よろ。 ってFAQかなw
0315NAME IS NULL
2009/01/23(金) 19:37:57ID:???その理由は?
0316NAME IS NULL
2009/01/23(金) 20:02:40ID:???EUC-JPだと外字の変換に微妙なクセがあるので、UTF-8がお勧め。
0317NAME IS NULL
2009/01/23(金) 21:24:37ID:???DB内部文字コードをEUC-JPにして、
クライアントとのやりとりをSJISにするのがおすすめ。
内部をUTF-8にすると、SJISからUTF-8への変換時に
機種依存文字とかでエラーが出たりする。
0318NAME IS NULL
2009/01/23(金) 21:32:04ID:???0319NAME IS NULL
2009/01/23(金) 22:20:25ID:???そかSJISを選べなかったとわ。
まだまだ未熟者だ...
いちおー自宅鯖のpgqlはUTF8にしてる。
0320NAME IS NULL
2009/01/23(金) 22:23:26ID:???0321NAME IS NULL
2009/01/23(金) 22:34:27ID:???携帯が絡んでくる事が多いのでSJIS必須。
0322NAME IS NULL
2009/01/23(金) 23:07:29ID:???他にも色々入らないよ。はしごだか、とか。
>>320
〜の問題は厄介だね。なんであんなことに、と思う。
0323NAME IS NULL
2009/01/23(金) 23:10:30ID:???0324NAME IS NULL
2009/01/24(土) 00:39:20ID:???MS932じゃなくてSJISから変換しようとして
機種依存文字で落ちてるんじゃないの?
気を付けるのは機種依存文字じゃなくて〜とかの
マッピング違う文字だけだよ
0325NAME IS NULL
2009/01/24(土) 00:40:02ID:???0326317
2009/01/24(土) 01:15:22ID:???クライアントの文字コードも EUC-JP で使ってるの?
クライアントは SJIS にすれば、普通に使えてるよ。
>>321
そのテクニックは知らなかった。
なにか困ることとか無いの?
>>324
いや、SET CLIENT_ENCODING='SJIS' 実行して、
PostgreSQL 側で文字コードの変換をさせてるから、
クライアントアプリ側でUTF-8への変換は実行してない。
機種依存文字の問題は PostgreSQL が MS932 を
扱えるようになれば解決しそうだけどねー。
0327NAME IS NULL
2009/01/24(土) 02:25:48ID:???勉強せねばw
0328NAME IS NULL
2009/01/24(土) 02:26:33ID:???0329NAME IS NULL
2009/01/24(土) 02:27:34ID:???2バイト目に0x5cがあるような文字もさらりとやってくれるようになってるの?
あと、MS932て記述珍しいかも。エディタでの指定にcp932でphp内での指定にsjis-win使ってる。
MS932でも通るのかな?
0330NAME IS NULL
2009/01/24(土) 02:32:15ID:???PHPでSJISとBOMありUTF-8は未だにウンチだよ
SJISのfgetcsvとかは0x5c問題が未だに解決されてないはず。
Eclipseで開発しようとするとUTF-8はBOMありだからhedaderでリダイレクトするとエラーがでるし・・・
0331NAME IS NULL
2009/01/24(土) 02:37:29ID:???テンプレート出力時に好きな文字コードで出力するのが最近の王道だと思うの
0332NAME IS NULL
2009/01/24(土) 04:50:27ID:???MS932ってJava用語っぽいね。
一般的にはMS932=cp932っぽい。
0333NAME IS NULL
2009/01/24(土) 05:04:06ID:???unix charset = UTF-8
dos charset = CP932
display charset = UTF-8
ってしてる。
0334NAME IS NULL
2009/01/24(土) 05:52:49ID:???Javaができた頃にはもうWindowsがあってWindows-31Jとの区別も必要だったから、
厳密にするためにWindowsの文字コードの方はMS932ってしたんだよね。
JSPなんかではWindows-31Jってしたりするわ。
0335NAME IS NULL
2009/02/06(金) 06:58:55ID:eu9JDTxG0336NAME IS NULL
2009/02/15(日) 03:16:10ID:???0337NAME IS NULL
2009/02/15(日) 03:30:46ID:???0338NAME IS NULL
2009/02/18(水) 21:25:52ID:???wakachi
senna
ludia
普通にインストールでいいんですよね?
インデクッスは作成さるんですが、インデクッススキャンしてくれないんです。
./configure UTF8指定
make
make install
Table "public.zip"
Column | Type | Modifiers
---------------+--------------+-----------
id | integer |
zip_code_5 | character(5) |
zip_code | character(7) |
ken_kana | text |
city_kana | text |
machi_kana | text |
ken | text |
city | text |
"idx_zip_city_senna_ludia" fulltext (city)
ludia=# explain analyze select * from zip where city like '%横浜%';
QUERY PLAN
-------------------------------------------------------------------------------------------------------
Seq Scan on zip (cost=0.00..4184.94 rows=37 width=143) (actual time=8.703..102.535 rows=971 loops=1)
Filter: (city ~~ '%横浜%'::text)
Total runtime: 105.441 ms
(3 rows)
Time: 134.188 ms
ludia=# explain analyze select * from zip where city @@ '横浜';
QUERY PLAN
----------------------------------------------------------------------------------------------------------
Seq Scan on zip (cost=0.00..4798.11 rows=123 width=143) (actual time=3198.851..3198.851 rows=0 loops=1)
Filter: (city @@ '横浜'::text)
Total runtime: 3198.980 ms
(3 rows)
0339NAME IS NULL
2009/02/19(木) 00:01:18ID:???↑ wakachi ← mecab
version 8.3.3です。よろしくお願いします。
0340NAME IS NULL
2009/02/19(木) 01:49:23ID:???ludia は、いまだ確認できませんが、別の手段で時間短縮できたので、クローズします。
ludia は、引き続きググってみます。
0341NAME IS NULL
2009/02/19(木) 02:26:52ID:???使ったことがないから手伝えないけどあんまり夜遅くまで無理しちゃダメだよ?
明日(今日?)やれるんならもう休んだほうが良いよ。
寝て起きたら直ぐに原因が分かった!って事が結構あるんだから。
0342NAME IS NULL
2009/02/19(木) 03:31:49ID:???0343NAME IS NULL
2009/02/19(木) 04:07:02ID:???>>338-340です。
ありがとうございます。
思わず、涙が。
私も寝ます。おやすみなさい。
0344NAME IS NULL
2009/02/19(木) 21:43:23ID:???PostgreSQL8.3以降は、tsearch2が標準になって@@演算子を使うようになったので
Ludiaインデックスを使用する演算子は%%に変更されています。
8.3系でLudiaを使うには、Vacuum後にreindexする必要があったりするので要注意。
いつもならスルーするんだが、340みてたら書く気になってもうた。
0345NAME IS NULL
2009/02/20(金) 15:00:22ID:???>>338です。レスありがとうございます。
>>341さんのいうとおりでした。翌朝、目が覚めて、ググって即判明しました・・・・。READMEが間違いだなんて><。
そのほかにも、(、Vacuum後にreindexする必要)あるんですね。
新たに、別の手段もわかりましたので、ludiaはちょっと保留です。
0346NAME IS NULL
2009/02/25(水) 08:46:10ID:CKM958xB(psqlodbc_08_03_0400.zip)接続をしています。
ODBCのデータソースの設定の中で、リードオンリィにチェックを
つけてみたのですが、元データを自由に改ざんできてしまいます。
何か設定にミスがありますでしょうか?
どなたかアドバイスをお願いします。
また、データベースに直接リードオンリー属性をつけても同じ状況です。
こちらもアドバイスをお願いしたく思います。
0347NAME IS NULL
2009/02/25(水) 10:31:45ID:???現状の運用に合わせるとなると、今どうやってるのかわからないと。
0348NAME IS NULL
2009/02/25(水) 13:42:10ID:???0349NAME IS NULL
2009/02/27(金) 14:49:31ID:???--
Delete from TableA where id=xxxxxxx;
vacuum TableA;
--
ってPHPで都度都度テーブルバキュームするのって
なんか問題ありますか?
0350NAME IS NULL
2009/02/27(金) 21:17:59ID:???0351NAME IS NULL
2009/02/27(金) 21:21:25ID:???0352NAME IS NULL
2009/02/27(金) 21:34:20ID:???0353NAME IS NULL
2009/02/28(土) 08:51:21ID:???0354NAME IS NULL
2009/02/28(土) 10:19:05ID:???同一テーブルではシリアル実行のみ。後続が待たされる。
別テーブルならパラレルに走る。
>>349
更新が激しいなら1分間隔くらいで vacuum をスケジュールするのは
アリだと思うが、アプリよりはデーモンから発行したほうが良いと思う。
0355NAME IS NULL
2009/03/01(日) 05:22:26ID:???まさかRDBMSにはロックという仕組みがあることを知らないとかないよな
0356NAME IS NULL
2009/03/01(日) 06:01:51ID:???0357NAME IS NULL
2009/03/01(日) 11:51:45ID:???0358NAME IS NULL
2009/03/01(日) 17:51:57ID:R7fc700l0359NAME IS NULL
2009/03/01(日) 18:35:34ID:???0360NAME IS NULL
2009/03/01(日) 19:37:18ID:???0361NAME IS NULL
2009/03/02(月) 00:33:44ID:???PostgreSQL=ポストグレ氏の
0362NAME IS NULL
2009/03/02(月) 09:31:06ID:???0363NAME IS NULL
2009/03/02(月) 10:21:19ID:???0364NAME IS NULL
2009/03/02(月) 17:35:43ID:???/ \
/ /・\ /・\ \
|  ̄ ̄  ̄ ̄ |
| (_人_) | 里田最高〜
| \ | |
\ \_| /
0365349
2009/03/02(月) 22:58:51ID:???>更新が激しいなら1分間隔くらいで vacuum をスケジュールするのは
>アリだと思うが、アプリよりはデーモンから発行したほうが良いと思う。
レス、ありがとうございます。
ちょっとサービスやcronの利用は最小にしたい希望があります。
とりあえず開発環境で試してますが、リレーション貼るテーブル
ではないので問題なさそう且つ機能しているみたいなんですけど。。。
ググってもこんな使い方している事例が出てこないので
ちょっと心配ですね。
以前8.2は互換性に問題があってやめましたが、
まだ8.3は8.1との互換性は検証してないんです。
0366NAME IS NULL
2009/03/03(火) 00:30:01ID:???特に高負荷なシステムなら更新性能落とすだけで意味ない
0367NAME IS NULL
2009/03/17(火) 18:14:58ID:24PL+uN8とすると、何も帰ってきません。topで見てもCPUは使われていない。ログにもなにもでてきませんが、
どうしたのでしょう?
試しにcreate table xxx;とやってdrop table xxx;とやると正しく削除されるのですが、
以前に作成したテーブルをdrop table table_name;として削除しても何も動いてくれません。
だんまりです。コンソールも戻ってこない。なんででしょうか?
0368NAME IS NULL
2009/03/17(火) 18:24:26ID:???0369NAME IS NULL
2009/03/17(火) 18:46:09ID:24PL+uN8postgresqlを再起動したら削除できたようです。
0370NAME IS NULL
2009/03/18(水) 12:53:34ID:???レプリケーションするときの最近の主流は何ですか?
0371NAME IS NULL
2009/03/18(水) 15:08:41ID:???以前と同様、主流といえるものはまだ存在しない。
0372NAME IS NULL
2009/03/18(水) 15:22:47ID:???Slony-IIはどうなったんだ
0373NAME IS NULL
2009/03/18(水) 15:26:55ID:???Postgres-Rが有望なのかな?
0374NAME IS NULL
2009/03/18(水) 15:46:16ID:???0375NAME IS NULL
2009/03/18(水) 22:20:51ID:???0376NAME IS NULL
2009/03/19(木) 15:40:31ID:???そう思わん?
0377NAME IS NULL
2009/03/19(木) 18:16:35ID:???内部コード:UTF8
client_encoding:euc-jp
上記の設定のDBにsjisのデータをINSERTしたところ、
2バイト文字・機種依存文字など全て文字化けすることなく登録できました。
connection後、「SET client_encoding TO 'sjis'」等は行っていません。
これはINSERT時にPostgreSQL側で型を自動判別して変換しているということでしょうか?
文字化け対策に特定の文字をhtml内に出力しておくことでブラウザに文字コードを判断させてる
ということを聞きますが、PostgreSQL型で判別を間違う事はないのでしょうか?
0378NAME IS NULL
2009/03/19(木) 21:58:35ID:???自動判別ってのは聞いたこと無いな。
SET client_encoding TO 'sjis' をやらなくても、
環境変数とかで設定できるから、なにかで設定されてるんじゃない?
あとPostgreSQLのバージョンは?
バージョン8.3からJIS X 0213に対応してるから、
機種依存文字とかもUTF-8に変換して登録できるはず。
http://postgresql.at.webry.info/200703/article_6.html
http://itpro.nikkeibp.co.jp/article/COLUMN/20070409/267852/
http://www.postgresql.org/docs/8.3/static/release-8-3.html
0379NAME IS NULL
2009/03/19(木) 22:29:01ID:???2) INSERTできていることをどうやって確認した?
(PHP等の)スクリプトが噛んでるんだったら
そこで変換が掛かってる可能性が、とか。
よく判らんけど。
0380NAME IS NULL
2009/03/20(金) 02:14:32ID:???PostgreSQL 7.4 on ContOS 5.2 という環境があるのですが、
これにpgpool-IIをインストールするには、どういう方法が
いちばん容易でしょうか?
yumでpgpool-IIをインストール - ZeBeVogue別館
http://d.hatena.ne.jp/zebevogue/20090120/1232438315
こんなページを見つけたのですが、うまく行きませんでした。
こちらで必要なPostgreSQLのバージョンが古いせいでしょうか。
http://yum.pgsqlrpms.org/reporpms/7.4/pgdg-centos-7.4-4.noarch.rpm
7.4用のこれ↑をインストールして、
pgpool-II以外を置き換えられてしまわないように、上のページと逆に
/etc/yum.repos.d/pgdg-74-centos.repo に
exclude=postgresql*
という設定を入れました。
しかしインストールできません。
libpq.so.3 というライブラリがない、と言われます。
上の設定を外してみると、インストールは進みます。
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
pgpool-II i686 2.0.1-1.rhel5 pgdg74 325 k
Installing for dependencies:
postgresql-libs i686 7.4.19-1PGDG.rhel5 pgdg74 372 k
postgresql-libs.i686の中に、libpq.so.3があったようです。
0381380
2009/03/20(金) 02:20:43ID:???しかし、postgresql-libs.i386 が、CentOSのデフォルトのレポジトリからすで
にインストールされているのです。このままインストールしたら競合を起こし
そうでこわいです。できたらCentOSの方のライブラリを利用したいのです。
この新しいレポジトリは、すべてi686用のパッケージになっているようで、そ
のためにi386用のパッケージがインストールされていても、パッケージの依存
関係は解決されないようなのです。
新レポジトリに、i386用の pgpool-IIがあったらいちばん良かったのですが。
ここから先は、どうしたらよいでしょうか?
0382NAME IS NULL
2009/03/20(金) 02:58:32ID:???なぜ今どきPostgreSQL 7.4を使うの?
PostgreSQL 8.x使えないの?
0383380
2009/03/20(金) 03:09:26ID:???私もそう思うのですが、これは古いシステムの部分修正で、DBのバージョンを
上げることができないのです。
その割にpgpool-IIを導入したりするのは、矛盾している気もしますが、いずれ
にせよ、決定権は私にはありません。
0384NAME IS NULL
2009/03/20(金) 03:37:57ID:???rpm -qpl コマンドで、
postgresql-libs.i686 でインストールされるファイルと、
既存の postgresql-libs.i386 のファイルを比較して、
上書きされないようなら、インストールして大丈夫なんじゃない?
確かi686用とi386用はそれぞれインストールできたはずだし。
>>383
あるよね、そういうこと。
上司や元請けは現場のこと理解してないのに、勝手になんでも決めるしね。
0385380
2009/03/20(金) 10:57:09ID:???ありがとうございます。ご返事が遅くなってすみません。
> 確かi686用とi386用はそれぞれインストールできたはずだし。
なるほど。しかしそうなると、今度は逆に、用の pgpool-II.i686を導入して、
既存のpostgresql.i386から利用できるかという心配をしてしまいます。調べて
みます。
> >>383
> あるよね、そういうこと。
はい。ただ、一番の原因は、私に技術力がないことだと思います。今も、yumで
インストールされた postgresql-libs.i386のファイルを取り出すにはどうした
らいいか、調べている最中です。yum やrpmの基本的な仕組みが分かっていない。
だから、相手にはっきりしたことを言えないでいるんです。上に書いた心配も
同根です。
なんかPotgreSQLではなくRPMの質問になってしまいました。スレ違いかも知れ
ません。ごめんなさい。
皆さん、どうもありがとうございました。
0386NAME IS NULL
2009/03/21(土) 16:47:05ID:???レスありがとうございます。
PostgreSQLは8.3.6 windows版
ODBCドライバ 08_03_0400です。
環境変数は設定していませんでした。
INSERTは4thDimensionという言語から
ODBC接続経由でINSERTしました。
4thDimensionの内部コードはShiftJISです。
確認はpgAdminから半角カナ、「(株)」等の機種依存文字を確認しました。
ここまで書いてて思ったんですが、ODBCドライバのところで
変換されてる可能性もあるんでしょうか?
0387NAME IS NULL
2009/03/22(日) 00:41:41ID:???ODBCドライバのログを取ってみれば分かると思うよ。
0388NAME IS NULL
2009/03/22(日) 10:01:46ID:s8j4mKbfODBCのプロパティでエンコード指定するとこ、なかったっけ?
0389NAME IS NULL
2009/03/28(土) 14:37:46ID:???UPDATE t_test t1
SET t1.id=SELECT t2.id FROM t_test t2 WHERE t1.parent_id=t2.id
という SQL 文は使えないのでしょうか?
ERROR: syntax error at or near "t1" at character 15
となってしまいます。
PostgreSQL では、どういう SQL 文にすれば良いのでしょうか?
0390名無し募集中。。。
2009/03/28(土) 15:47:18ID:7lyHoUqc0391NAME IS NULL
2009/03/29(日) 02:41:42ID:???SET id=SELECT t2.id FROM t_test t2 WHERE parent_id=t2.id
UPDATE対象のテーブルにはrename使えないだろ
0392NAME IS NULL
2009/03/29(日) 03:18:18ID:???UPDATE t_test AS t1
SET id=(SELECT t2.id FROM t_test AS t2 WHERE t1.parent_id=t2.id);
"AS" とつけるのは俺の趣味だが、
>>391のWHERE句は t2.parent_id=t2.id になっていそう。
0393NAME IS NULL
2009/03/29(日) 03:23:35ID:???カラム名の方はできるけど
0394NAME IS NULL
2009/03/29(日) 03:28:59ID:???テーブル、カラムどちらとも必ずASと書いているので、気づいてないだけかもしれんが、
少なくとも手元の8.3.5では省略できる。以前も出来てた希ガス。
出来ないのはテーブルを返すサブクエリには、必ず別名をつけなきゃならないことじゃ?
0395NAME IS NULL
2009/03/29(日) 08:54:01ID:???本当に試してみたのか?
>>391
>>392でも指摘されているが期待通りの結果にならないだろ。
>>392
8.1ではUPDATEでAS指定はできない。
http://www.postgresql.jp/document/pg815doc/html/sql-update.html
0396NAME IS NULL
2009/03/31(火) 23:08:32ID:???UPDATEでテーブル名省略したときには優先的にUPDATE対象のテーブルになる。
UPDATE対象にASは使えないのだから391で正しいはず
0397NAME IS NULL
2009/04/01(水) 08:14:00ID:???Mar 30 14:15:40 localhost postgres[2748]: [47-1] FATAL: connection limit ...
0398NAME IS NULL
2009/04/07(火) 13:52:07ID:???select * from v$session;
ってpostgreだとなんでしょう?
0399NAME IS NULL
2009/04/07(火) 14:22:39ID:???syslog?うちじゃ出ないからわからん。
0400NAME IS NULL
2009/04/07(火) 14:23:34ID:???それぞれ個別にはとれるから、それを集めたSQLを発行すればいけると思う
0401NAME IS NULL
2009/04/08(水) 23:19:56ID:iDHCZoF+SELECT (i=i+1) AS rank FROM test;
で連番を振れないのはどうしてですか?
0402NAME IS NULL
2009/04/09(木) 22:30:25ID:???SERIALで自己解決しました。
0403NAME IS NULL
2009/04/11(土) 19:37:37ID:xGvi71qqPL/pgSQLで作ったファンクションのSQLをローカルのテキストに保存してたのですが捨ててしまいました。
ファンクションのソースを参照するコマンドやSQLがわかりません。
どうすればいいでしょうか。
0404NAME IS NULL
2009/04/11(土) 19:49:52ID:???SELECT prosrc FROM pg_catalog.pg_proc WHERE proname = '関数名'
関数のインタフェースはまた別で取らないといけないけど。
CSEとかのGUIプログラムで大抵は分かるようになってるんじゃね?
0405NAME IS NULL
2009/04/11(土) 19:57:40ID:xGvi71qq出来ました!!有難うございます!!
0406NAME IS NULL
2009/04/16(木) 09:59:21ID:BcIkA+SW0407NAME IS NULL
2009/04/18(土) 14:07:54ID:???今度新規で買うwin2008サーバーに入れる予定なんだけど、問題点があれば
事前に知っておきたいです。
0408NAME IS NULL
2009/04/18(土) 18:27:52ID:???0409NAME IS NULL
2009/04/18(土) 19:43:24ID:???0410NAME IS NULL
2009/04/18(土) 21:30:30ID:???0411NAME IS NULL
2009/04/18(土) 22:33:38ID:???あとサーバーを新規に入れるだけで、DBMS は今使ってるバージョンを
そのまま使うとかじゃね。わざわざ?
>>410
Windows しか使ったことないとか、会社のポリシーとか色々理由はあ
るだろ。利点なんて人それぞれだということぐらい理解しなよ。
0412NAME IS NULL
2009/04/18(土) 22:52:08ID:???質問者の使っているバージョンが古いと、答えるより先に
「なんでそんな古いの使ってるの?」と逆質問するやつが
必ずいたもんなw
0413NAME IS NULL
2009/04/18(土) 22:54:00ID:???そういう制限に出会ったことがないくらいの経験ということだよ
0414NAME IS NULL
2009/04/18(土) 22:58:48ID:???そんなレンサバ選ぶって時点でもう…
0415NAME IS NULL
2009/04/19(日) 00:07:27ID:???MySQLだと下手したら3.23なんて所もある
0416NAME IS NULL
2009/04/19(日) 00:32:59ID:???0417NAME IS NULL
2009/04/19(日) 07:51:10ID:???8.2 ならまだメンテされてる。ただ、8.3 で Windows 上でメモリ消費が減る
改修が入っていたと思うから、やっぱり新しいほうが得ではあるね。
0418NAME IS NULL
2009/04/19(日) 09:12:59ID:???ttp://lets.postgresql.jp/documents/tutorial/cast/
0419NAME IS NULL
2009/04/20(月) 20:26:37ID:???型変換が厳密なったと言えば聞こえはいいけど
0.1 バージョンアップでSQLが非互換とか頭沸いてるな
0420NAME IS NULL
2009/04/20(月) 20:29:16ID:???だと理解した上で発言して欲しいものだ。
まぁ、この件はさすがにやりすぎだとは思うけど。
互換オプションくらい残せば良かったのにねぇ。
0421NAME IS NULL
2009/04/20(月) 23:48:41ID:???0422NAME IS NULL
2009/04/21(火) 11:06:38ID:???バージョン固定だし、コードひどいし、こっちがコード送っても
素直に組み込まずにこねくり回して自分のものにしてから組み込むし
0424NAME IS NULL
2009/04/24(金) 18:05:35ID:???バックアップされたWALって無限に増殖するよね。
随時リストアするわけだし古いログ削除してもいいの?
それとも古くなったログから削除してくれる機能ってあるのかな・・・
0425NAME IS NULL
2009/04/24(金) 18:32:45ID:???ttp://www.techscore.com/tech/sql/replication/2.html#rp2.4
0426NAME IS NULL
2009/04/25(土) 03:39:40ID:???http://www.postgresql.jp/document/current/html/pgstandby.html
pg_standbyに%rを指定しろ。
0427NAME IS NULL
2009/04/25(土) 07:14:23ID:Ny76O360INSERTされてる最中のテーブルを別のアプリがSELECTできないようにする簡単な方法って
ありますか?なんでも追記型DBなんでロックしててもSELECTできないとか聞きました。
バージョンは7.Xです。
あと、高速化の参考になる本とかWebサイトとかあったら教えてください。
0428427
2009/04/25(土) 07:17:24ID:Ny76O360× SELECTできない
○ SELECTできる
です
0429NAME IS NULL
2009/04/25(土) 09:11:59ID:UNU8504Obegin insert commit
の繰り返しなら insertしてる行以外なら普通に読めると思うけど
どんな想定なのか、がわからないとなんともいえない
0430NAME IS NULL
2009/04/25(土) 09:39:24ID:Ny76O360BEGIN INSERT ENDのただ中にあるテーブルに他のアプリがSELECTをかけてきた場合、
SELECTをエラーにする方法はありますでしょうか。
0431NAME IS NULL
2009/04/25(土) 12:00:41ID:???0432NAME IS NULL
2009/04/28(火) 00:35:42ID:???0433NAME IS NULL
2009/04/28(火) 00:39:19ID:???0434NAME IS NULL
2009/04/28(火) 07:03:10ID:R5TUyxyI事故解決しますた。COMMITするまではINSERTのデフォルトロックで、他のプロセスの
SELECTがきかないみたいです。
>>431
それもありですね。
0435NAME IS NULL
2009/04/28(火) 10:10:08ID:ZrsNSBAo8.3系列だとAutoに任せていいんじゃない?
0436NAME IS NULL
2009/04/28(火) 23:21:53ID:???ロックとMVCCを誤解していないか?
0437NAME IS NULL
2009/04/29(水) 02:49:25ID:???セッション隔離とロックを分けようね。
ttp://www.postgresql.jp/document/pg837doc/html/mvcc.html
この辺。
0438NAME IS NULL
2009/05/01(金) 12:09:11ID:???自己解決だろうが、レスには、お礼をつけるようにな。
0439NAME IS NULL
2009/05/01(金) 12:27:28ID:???解決したかどうかの報告なら欲しいけどね。
0440NAME IS NULL
2009/05/01(金) 12:33:47ID:???人間として、社会で生活する、最低限のマナー。
0441NAME IS NULL
2009/05/01(金) 18:06:46ID:???サーバ側は8.3をコンパイルして利用したいと思っているのですが
互換性がないとか効率が悪くなるような問題ありますでしょうか?
0442NAME IS NULL
2009/05/01(金) 21:16:38ID:???クライアントで使うのが libpq だけなら大丈夫だと思うけど、
psql を使うとテーブル表示とかでエラーになるかも。
0443NAME IS NULL
2009/05/08(金) 23:18:09ID:???XPからODBCで接続したいのだけれど
Could not connect to the server;
Asocket operation was attempted to an unreachable host.
というエラーで接続できません。
FWは切ってみても同じ。
ドライバは
PostgreSQL Unicode 8.03.04.00
PostgreSQL ANSI 8.03.04.00
PostgreSQL 7.01.00.06 (インターウィズから)
を使ってみても同じ。
PostgreSQLは8.1.4で、
pg_hba.confにはIPアドレスを追加、
postgresql.confでlisten_addresses=*。
ドライバがおかしいのでしょうか。
PostgreSQLの設定がおかしいのでしょうか。
それとも何か別の原因があるのでしょうか。
0444NAME IS NULL
2009/05/09(土) 01:24:50ID:???0445NAME IS NULL
2009/05/09(土) 01:25:52ID:???pg_hba.confに書いてある認証方法が正しいかと
postmasterの起動オプションで外部接続おkにしてるか確認
0446NAME IS NULL
2009/05/09(土) 15:49:51ID:???が気になる。XPからLinuxへのODBCの設定はIPでしてるの?
打ち間違ってない?
0447NAME IS NULL
2009/05/10(日) 10:24:28ID:???0448443
2009/05/10(日) 20:08:29ID:???色々調べてますが、
どうにも行き詰っています。
>>445
pg_hba.confにて接続を許可するIPアドレスは指定しています。
postmasterには
pg_ctl -o "-i" start
としてオプションつけてみました。
ただ、調べた中で、
cat /usr/local/pgsql/data/postmaster.opts
の結果が
/usr/local/pgsql/bin/postmaster -i
となればよいとありましたが、
実際には
/usr/local/pgsql/bin/postgres -i
となります。
>>446
IPアドレスでもホスト名でもやってみました。
数回試してもダメでした
>>447
pingは通ります。
pgAdminも使えるし、自作のwebツールも動きます。
いっそ全てwebでやってしまおうかと考えてしまいますが、
そうするには時間が足りない所です。
0449NAME IS NULL
2009/05/10(日) 22:14:43ID:???0450NAME IS NULL
2009/05/10(日) 22:24:43ID:???telnet サーバ 5432
で入力待ち状態になる? いきなり切断される?
0451NAME IS NULL
2009/05/10(日) 23:15:24ID:???postgresql.confのlisten_addressesとportは?
0452NAME IS NULL
2009/05/10(日) 23:56:36ID:???>>443
ポートはデフォルトなんでしょ
0453NAME IS NULL
2009/05/11(月) 00:04:50ID:???0454NAME IS NULL
2009/05/11(月) 00:19:47ID:???だとしたら多分プロキシだな
0455NAME IS NULL
2009/05/11(月) 01:03:59ID:???Pro以上じゃないと無理なのかな?
0456NAME IS NULL
2009/05/11(月) 01:32:07ID:???Homeでダイジョブ
逆なら99%SELinuxだろうけどな〜
0457NAME IS NULL
2009/05/11(月) 01:33:07ID:???0458NAME IS NULL
2009/05/11(月) 10:26:32ID:???postgresql.confがデフォだと外側からlistenしない罠
0459NAME IS NULL
2009/05/11(月) 11:07:28ID:???でも、自作のWebツールとわざわざ言ってるのが気になるな。
Webのプログラムは同じサーバからつなぐだろうから確認にならんからな、、、、
まさかpgAdminもローカルで動かしてたりして・・・
0460NAME IS NULL
2009/05/11(月) 12:48:57ID:???0461NAME IS NULL
2009/05/11(月) 13:26:26ID:???認証確認するにしても、ODBCでやるためにはどうすればいいのか
というのもあるし、まずは順番に確認すればいいでしょ。
切り分けでtrustでつながるか試す手もあるけど。
0462NAME IS NULL
2009/05/11(月) 14:17:55ID:???携帯の予測変換使ったら間違っちゃった
0463NAME IS NULL
2009/05/11(月) 14:44:48ID:???だからlistenは提示されてるだろ
0464NAME IS NULL
2009/05/11(月) 14:56:30ID:???そのアドレスのホストそのものが存在してないように見える。
pingが通っているらしいが、そのpingのアドレスそのままODBCに入れてるのかな?
0465NAME IS NULL
2009/05/12(火) 00:51:37ID:???せっかくみんながヒント教えてくれてるんだから、
ちゃんと順番に切り分けて考えたらいいんじゃない?
A. Linux上にて netstat -an (等) で プロセスが listen してるか確認
B. Linux上にて psql -h [外向けのIP] で 接続できるか確認
C. XP上にて ping で Linux に到達できるか確認
D. XP上にて telnet [LinuxのIP] [ポート] で、コネクション張れるか確認
E. XP上にて pgAdmin でつながるか確認
F. XP上にて PostgreSQLドライバ の [接続テスト] でつながるか確認
適当にこれぐらいの確認ポイントを思いついたら
前から確認してみたり、後ろから確認してみたり (2分探索してみてもいいけど)
とにかく切り分けられるポイントを探そうよ。
> pgAdminも使えるし、自作のwebツールも動きます。
ってが「本当に正しい」とすれば、たぶん E と F の間が問題なわけだから
認証方式 (などの上位層) を疑うのが正解じゃないかなぁ。
これがまったくの勘違いで、pgAdminがローカルでした、ってのなら
A-F のドコなのかを きちっと切り分けないとだめでしょ。。
切り分けて、そして、そこから細分化していかないと。
# 頼むから、ping 使うべき場面で、IE 起動するようなマネだけはやめてくれ... orz
0466443
2009/05/12(火) 12:52:23ID:???引き続きやっております。
まずポートはデフォルト5432です。
pgAdminはサーバー上で動いてるのをXPから使ってます。
イベントログには特に何もないようです。
telnetは動かしてなかったので動かそうとしてみました。
が、なんだかうまくいかないので保留です。
認証方式について調べます。
0467NAME IS NULL
2009/05/12(火) 13:07:43ID:???postgresのポートだぞ?
0468NAME IS NULL
2009/05/12(火) 13:29:03ID:???というか、>>443のエラーはWinsockの10065のエラーでホストに到達できないんだけど。
ping通ったってまさかtelnetとかでサーバのコンソールからping撃ったんじゃないだろうね?
Windowsのコマンドプロンプトから打った?もしそれで通ってるならODBCのサーバの欄に
それと同じ名前で入れてるのか確認してみてよ。
0469NAME IS NULL
2009/05/12(火) 13:36:31ID:???あと、アドレスを仮定してpg_hba.confの内容やhosts等設定した内容そのものを書いてみて。
たとえば、サーバが192.168.0.1でWindowsPCが192.168.0.2とか仮定してさ。
0470NAME IS NULL
2009/05/12(火) 13:44:28ID:???同じネットワークアドレスじゃない感じがしないでもないので。
0471NAME IS NULL
2009/05/12(火) 22:06:53ID:???あるかな?あるかもな?
0472NAME IS NULL
2009/05/12(火) 22:32:49ID:???0473NAME IS NULL
2009/05/12(火) 22:52:57ID:???だって想像するしかないじゃん
0474NAME IS NULL
2009/05/12(火) 22:57:59ID:???いいや、エラーメッセージの内容から>>468の通りWinsockのエラーなのは分かるんだから
認証方式がとか的外れなことを書いても仕方ない。
とにかく443はさっさと質問に答えるかアドバイスに従って追試しろよ。
0475NAME IS NULL
2009/05/12(火) 23:53:15ID:???0476NAME IS NULL
2009/05/13(水) 07:35:48ID:???ここを疑うべきだったかもね
ノートンとか効いてるとどうなるんだろ
0477443
2009/05/14(木) 09:28:01ID:???反応は遅いですが
サーバー上からPing打つとかありえない想像いうか仮定してるのは
ちょっと的外れです
PostgreSQLのスレでまさかPingの打ち方を問題視するレベルの人が口を出してくるとは思ってませんでした
見込み違いのようですので
これにて失礼します
0478NAME IS NULL
2009/05/14(木) 09:52:11ID:???そんなノイズを取り除けないようならここで聞くべきではない。
0479NAME IS NULL
2009/05/14(木) 11:39:20ID:???それを指摘されてもしょうがない程度の情報しか
君が出してないと言うことになぜ気がつかない?
0480NAME IS NULL
2009/05/14(木) 16:01:45ID:???0481NAME IS NULL
2009/05/15(金) 04:43:00ID:???# iptables -F
したら繋がる予感
0482NAME IS NULL
2009/05/16(土) 16:02:22ID:wSUSR8sgポストグレスのユーザー teacher
がいます。
sasaki, yoshida, takahashi, ikedaからDBの共通ユーザteacherで
ログインしたいです。
この時に
psql -U teacher -d teachers_address
として、コマンドを打つのですが、
psql: FATAL: Ident authentication failed for user "sasaki"
とでてログインできません。
ポストグレスのユーザ名とログインユーザ名が異なっていても
ポストグレスのデータベースにログインできるようにするには
何かほかに必要でしょうか?
パスワードは現在は設定していません。
0483NAME IS NULL
2009/05/16(土) 16:05:22ID:???0484NAME IS NULL
2009/05/16(土) 16:24:05ID:???0485NAME IS NULL
2009/05/16(土) 17:57:30ID:???local teachers_address teacher password
と追記
0486NAME IS NULL
2009/05/16(土) 18:53:59ID:???0487NAME IS NULL
2009/05/17(日) 01:25:00ID:???>ポストグレスのユーザ名とログインユーザ名が異なっていても
>ポストグレスのデータベースにログインできるようにするには
これに答えることしか考えてなかった。
サーバーには他にもユーザーがいっぱいいてちゃんと管理する
(postgresにアクセスできないユーザーも作るとか)ならロールの方がいい。
けどユーザー追加するたびに設定しないといけなくね?
テストDBとかでアカウント追加したら全員teacherでアクセスできるようにするなら
postgres.confなら一回変更しておけばOK。
予想だと校内LANの本番サーバーってとこかな。あるべき論ならロール設定だけど。
0488NAME IS NULL
2009/05/19(火) 11:16:19ID:???ttp://ml.postgresql.jp/pipermail/pgsql-jp/
が今年からアーカイブされていないけど、復活する見込みはないの?
0489NAME IS NULL
2009/05/19(火) 22:26:52ID:???単純に ident 認証したくないでだけであれば、
pg_hba.conf を編集して認証方式を ident から trust に変更すれば OK。
例えば、Unix ドメインソケット経由の接続であれば、
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all ident sameuser
を
local all all trust
というように書き換えるだけ。
ただ、これだと PostgreSQL 上のユーザを指定すれば誰でも接続できてしまいます。
ident 認証で Unix システムと PostgreSQL 上のユーザの対応を記述するのであれば、
>> 484 の言うように pg_ident.conf にマッピングを定義しましょう。
pg_hba.conf を以下のように書き換えて (teachers はマップ名、任意の名前でOK)、
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all ident teachers
さらに pg_ident.conf にマッピングを定義します。
# MAPNAME IDENT-USERNAME PG-USERNAME
teachers sakaki teacher
teachers yoshida teacher
teachers takahashi teacher
teachers ikeda teacher
ユーザが増えるごとに pg_ident.conf を編集するのが嫌なら、
以下のように記述して $PGDATA/teachers にユーザ名のリスト記述してもいいでしょう。
teachers @teachers teacher
まあロールで管理するにしても認証方式を trust にしない限りは、
ユーザが増えるたびに何かしら設定する必要はありますね。
グループロールに共通の設定を行って新規のユーザをそのロールに所属させるのがいいかな。
>> 485
パスワード認証するなら password ではなく md5 にすべきでは、
プライベートなネットワークなら問題ないと思うけど。
0490NAME IS NULL
2009/05/19(火) 22:29:25ID:???中の人に言っておきます
0491NAME IS NULL
2009/05/20(水) 09:36:35ID:???ありがとうございまーす
0492NAME IS NULL
2009/05/20(水) 11:33:19ID:IicKG2eN0493NAME IS NULL
2009/05/20(水) 20:52:43ID:???>プライベートなネットワークなら問題ないと思うけど。
publicなネットワークにIP制限とか無しでDBのポート公開することなくね?
もちろんmd5に越したこと無いけど
0494493
2009/05/20(水) 20:53:32ID:???忘れてください。
0495482
2009/05/23(土) 19:15:37ID:9SGiy29B皆様ありがとうございます。
0496NAME IS NULL
2009/05/27(水) 11:26:55ID:???色々変わるけど、ALTER RENAMEが一番嬉しい。
0497NAME IS NULL
2009/05/27(水) 23:56:18ID:???ALTER RENAMEってALTER TYPE RENAMEのこと?
ALTERは使う機会が少ないので、いまいち実感がわかないな
それよりもmax_fsm_{pages,relations}が消えたのがうれしいな
ウインドウ関数やWITH節が追加されたのはいいがSQLが書けねーwww
0498NAME IS NULL
2009/05/28(木) 10:21:32ID:???無視されるんだけど、何か使い方間違ってるかな?
psql -h dbhost -d database -U postgres -t -v statement_timeout=10 -c クエリー
psqlをインタラクティブで実行してsetで設定してからSQL流すのは動作するんだけど、
そういうものなのですか?
0499NAME IS NULL
2009/05/28(木) 11:23:51ID:???0500NAME IS NULL
2009/05/28(木) 20:48:46ID:90SWG0se知名度
おれはこっちのほうが使用経験多いけどなー
0501NAME IS NULL
2009/05/28(木) 21:45:13ID:???あっちは所詮読み出し番長
0502NAME IS NULL
2009/05/28(木) 22:01:01ID:???多分MySQLはOracleの簡易版みたいな扱いになるんではないかと踏んでいる。
0503NAME IS NULL
2009/05/28(木) 22:10:57ID:???はい、つぎのひと。
0504NAME IS NULL
2009/05/29(金) 03:34:04ID:???0505NAME IS NULL
2009/05/29(金) 22:14:02ID:???0506NAME IS NULL
2009/05/30(土) 05:24:16ID:???そんなのずいぶん昔の話じゃないの?
日本だけPostgreSQLが流行ってるのは早い頃から
ユーザーグループが日本語文章公開してたからだと思う。
今はどっちもそれなりじゃないかと思うんだけど。
FreeBSD vs Linuxみたいにならないといいなあ。
mysqlとpsqlのコマンドが似てて混乱したり
キャッシュの特性とか最適化の方法とかMySQLの分まで
覚えるのめんどい。
0507NAME IS NULL
2009/05/30(土) 09:15:34ID:???日本でPostgreSQLが流行ったのってPHP3が流行りだした時に、
PHP+PostgreSQLのいわゆるマンモス本でPHPとPostgreSQLを
覚えた人が多いからじゃないかと思っている。
でその前後で石井さんのPostgreSQL本を読んだ記憶がある。
MySQLも同時期に流行りだしてたけど、当時の日本語解説本がイマイチだったのと
商用使用の場合、ライセンスがどうなのかがあやふやで悩んだな。
今は日本語の情報や構築例がどっちも数多くあるから、
どっちを使うかは開発メンバーと案件次第だな。
0508NAME IS NULL
2009/05/30(土) 09:56:54ID:???まともに使えないから見向きもされていないという感じだったからなぁ。
その後欧米じゃMySQLの方が普及していると聞いても、逆に信じられないという
雰囲気だったし。
0509NAME IS NULL
2009/05/30(土) 14:22:00ID:???0510NAME IS NULL
2009/05/30(土) 15:57:40ID:???何かしらの型で返答しなきゃいけないんだから
そりゃ一番汎用的な型で返してくると思うよ
0511NAME IS NULL
2009/05/30(土) 16:40:37ID:???日本で流行り始めた当時はまだPostgres95の時代だったと思うけど、
・MySQLに比べて明らかに遅い
・頻繁にVACUUMする(当時はVACUUM = FULL VACUUM)する必要があり、
継続したサービスを行えない
なんていうデメリットはかなり大きかった。
MySQLがDBとしての機能の面で用途を限られていたのに対し、Postgres95は
性能と運用の面で用途を限られていた。
0512NAME IS NULL
2009/05/30(土) 16:46:38ID:???6.5くらいからじゃね
0513NAME IS NULL
2009/05/30(土) 17:03:34ID:???0514NAME IS NULL
2009/05/30(土) 17:34:13ID:???なんで unkown 型のままじゃだめなん?と思っただけ。
型キャストしたけどさ。
0515NAME IS NULL
2009/05/30(土) 17:40:55ID:???一応あったけど日本に限らずどっちも使われてるってレベルじゃなかったはず
MySQLは3になってから、PostgreSQLはマルチバイトサポート入ってからあたりなので
98年とかそのくらいじゃないかねフリーRDBMSが流行りだしたのは
0516NAME IS NULL
2009/05/31(日) 23:09:28ID:0AQMJBED300MBの容量でもECCメモリ搭載サーバは60分以上時間を要し、
サーバ用途モデルでないx86_64PCでも10分でリストア完了します。
この差には何か原因があるのですか?
0517NAME IS NULL
2009/05/31(日) 23:39:19ID:???なぜECCなんて関係ないものを引き合いに出す?
0518NAME IS NULL
2009/05/31(日) 23:56:30ID:???スペック晒してみなよ
0519NAME IS NULL
2009/06/01(月) 01:42:26ID:???・実は設定も違う
・オチ思いつかなかった
0520NAME IS NULL
2009/06/01(月) 02:42:59ID:???同じように見えても適当に処理してるPCの方が速度だけは速いこともある
0521NAME IS NULL
2009/06/01(月) 03:31:21ID:???0522NAME IS NULL
2009/06/01(月) 03:42:19ID:???0523NAME IS NULL
2009/06/01(月) 11:12:33ID:???こないだサーバ連鎖死亡でリストアしまくったけど300MBぐらいだと大体2分以内だったよ。
ラージオブジェクトを多量に含んだ2Gのは、10分ぐらい掛かったけど。
スペックはXEON3300台でメモリ8G ECCとQ9550でメモリ8G nonECC。
しかし3年は持ったとはいえHPめ。一斉に死ぬとは。
コンパックの時と同じ事やりやがって、ゆるさん。
0524NAME IS NULL
2009/06/01(月) 11:18:26ID:???最新だとしても低電圧CelelonとかVIAとかかもしれん
0525NAME IS NULL
2009/06/01(月) 12:42:04ID:???どちらも非運用中でその速度だとメモリ以外のどっかが故障してるんじゃ?
OSから見えない負荷(RAIDのrebuildとか)かかってるとか
0526NAME IS NULL
2009/06/01(月) 15:29:30ID:1n52fUK4処理の早い順にスペックを記載します。
�@CPU:core2duo E6300 RAM:1GB SATA2 10分
�ACPU:Xeon x5260 * 2 RAM:8GB SAS_Raid5 60分以上
�BCPU:Opteron 1216 RAM:2GB SATA2 120分以上
�CCPU:Xeon x3210 RAM:2GB SATA2_Raid1 120分以上
OSは、全て同じCentOS5.2_64bit版 DBは、8.3.3です。
DBチューニングも全て同じでWALのfsyncも全てonです。
唯一相違は、RAMの搭載量に応じてconfファイルのメモリー割り当て量
が若干違うのとメモリの形式が違う事ぐらいです。
また、-D無しダンプのコピー文(30MB)だと全てのマシンが1分程でリストア
を完了します。
この差は、何故?という感じです。
0527NAME IS NULL
2009/06/01(月) 15:51:36ID:???リストア時は、fsyncはOFFに。多分それだけで解決するかと。
ただfsync onでも早いサーバは早いのは
なんでなんだろう。
0528NAME IS NULL
2009/06/01(月) 16:15:30ID:???0529NAME IS NULL
2009/06/01(月) 20:53:46ID:???�Aのメモリテストを行って正常なのを確認したうえで、ディスクをRAID5からシングルのディスクにして試してみる事はできる?
RAIDのディスクは書き込みが遅くなることが良くあるよ。それが機器構成のせいなのかコントローラのせいかは解らないけど。
0530NAME IS NULL
2009/06/01(月) 21:44:08ID:???0531NAME IS NULL
2009/06/01(月) 21:45:50ID:???0532NAME IS NULL
2009/06/02(火) 00:37:38ID:BU3d+dIz�Aのテストは、既に本番稼動していますので、残念ながら無理です。
0533NAME IS NULL
2009/06/02(火) 01:56:24ID:???0534NAME IS NULL
2009/06/02(火) 02:42:57ID:???RAIDでないディスクがつながっているならそちらを使って試す、って事もありかと思うけど。
どういった意図で >>516 のテストを行ったのかは不明だけど、お客の要望で調べているなら
同じマシンをしつらえて確かめるか、メンテでお休み日を狙って試すしかなさそう。
比較するなら比較したい所以外の要素をできる限り同じにしなきゃ。
例えば�@が誰もアクセスしないスタンドアロンで、�Aが運用中の負荷ありサーバ、これで比較したところで
せいぜい解るのが「負荷のかかる�Aが遅い」ってくらいの物。「そりゃそうだよねぇ」くらいしかいえない。
条件を同じにして比べたうえで「じゃあメモリ?」「じゃあディスク?」と切り分けしていかないと。
0535NAME IS NULL
2009/06/02(火) 11:14:43ID:???RAIDカードがショボいとかバッテリー無いか切れててキャッシュしてないとかでそもそも早く無い構成な気がする
遅延コミット周り調整したら多少は改善されないかな?
0536NAME IS NULL
2009/06/02(火) 15:24:22ID:lKPgw7jB�Aでテストした時は、DBサーバ入れ替えの為に、新たに新品
を購入しまして、コピーダンプとインサートダンプの違いを
把握したかっただけです。復旧作業所要時間把握の為
ですから社内ローカルにある�@�B�Cと基本的に同一条件での
結果でした(つまりリストア処理のみ)。
コピーダンプで障害復旧時のリストアは1分程で終わるので
問題ないレベルかなと。。。。
Webを検索してもそのような事を語っているサイトを見つけられなかった
ので、原因・対処方法をご存知の方がいらっしゃるかと思い。
その処理に限り、何故単なるPCが数倍から数十倍早いのかなぞだった
ので、raid1は早くないのは知っていましたが、違い過ぎかなと。
0537NAME IS NULL
2009/06/02(火) 17:57:22ID:???・PostgresForest
・PGCluster
のどちらがいいでしょうか?
また、上記以外にお勧めの構成があれば教えてください。
よろしくお願いします。
0538NAME IS NULL
2009/06/02(火) 18:15:47ID:???0539NAME IS NULL
2009/06/02(火) 19:22:03ID:???http://decide.cocolog-nifty.com/blog/2009/03/pg_restore-b240.html
「pg_restore 遅い」で検索したら真っ先に出てきたが。
0540NAME IS NULL
2009/06/02(火) 19:30:45ID:???I/Oのベンチも取ろうとせず、違いすぎかなとか、もうね。
0541NAME IS NULL
2009/06/02(火) 20:46:46ID:???新品でも古くてもリストアしなおしても、RAIDが遅い事があるよ、ってのは変わらないです。
RAIDよりノーマルのディスクの方が速かったなんて、ミドルレンジの安いハードでならよくある話。
#H社のサーバなんかじゃよくそんな現象にぶつかる。SEさんに言って解決したためしは今のところ無い
私的にはディスクアクセスにRAIDのコントローラが付いていけてないんだと思います。I/O負荷の高そうなことをやってるみたいだし。
単に何で遅いのか・対処法を知りたかったのならもう色々レスがあるから終了ですね。
0542NAME IS NULL
2009/06/02(火) 21:35:48ID:???0543NAME IS NULL
2009/06/02(火) 22:49:22ID:3q/0YykO( id serial not null,
"type" character varying(255)
description character varying(255)
constraint hoge_pk primary key (id)
)
ていうテーブルに
select * from hoge where type='hogehoge' order by description
というクエリでソートが発生しないようにインデックスを張ろうとおもって、
descriptionに張ったのですが、インデックスが使用されません。
どう張ったらインデックスが使用されるようになるのでしょうか。
教えてください。
ちなみにレコード数は4万件ほどで、postgres8.3です
0544NAME IS NULL
2009/06/02(火) 23:28:19ID:???ただデータ内容にもよるから絶対に走らないとは言えない
データ長いから部分インデックスにした方がいい
あとインデックス気にするくらいパフォーマンスに気を遣ってるなら
せめて*はやめよーぜ
0545NAME IS NULL
2009/06/02(火) 23:31:43ID:???つーか「ソートが発生しないように」は無理じゃね?
0546NAME IS NULL
2009/06/02(火) 23:34:32ID:???「ただし、ORDER BY句の列はNOT NULLである必要があります。」だって
http://www.hi-ho.ne.jp/tsumiki/doc_1.html
0547NAME IS NULL
2009/06/03(水) 06:36:50ID:???ソートされないならオプティマイザの判断の問題だから、
そのインデックスに基づいて CLUSTER するしかないかも。
0548NAME IS NULL
2009/06/03(水) 14:30:37ID:WSowL2mJindexは検索が早くなる・かも知れない・けど、並び順と関係
あるという記述はみたことがないのだが・・・
0549NAME IS NULL
2009/06/03(水) 14:39:06ID:WSowL2mJそれの order by だから、検索結果をフルスキャンしないと
順序は決められないわな・・・・
#と思うのだが
0550NAME IS NULL
2009/06/03(水) 14:59:52ID:???並び順と関係のないインデックスなんて聞いたことない。
0551NAME IS NULL
2009/06/03(水) 15:03:08ID:???pgpool-IIではクラスタも作れるようになっているんですね。
テストしてみます。
ありがとうございました。
0552NAME IS NULL
2009/06/03(水) 16:08:43ID:WSowL2mJ(HDD上の)物理的にどこにあるかを早く探す為にあるんでしょ?
selectした結果をソートするのに、物理的な場所なんか関係
無いと思うのだが
0553NAME IS NULL
2009/06/03(水) 17:27:55ID:???INDEXスキャンだと、探し出す時点でソート済みになる。
0554NAME IS NULL
2009/06/03(水) 20:13:44ID:???BITMAP INDEX
0555NAME IS NULL
2009/06/04(木) 03:48:32ID:???行の読み出し順と order by 句で指定した列に張られたインデクスの並び順が、少しで一致していない可能性があればソートされちゃうんじゃないかと。
(1)列type にはインデクスが張られてないから、where 句の指定によりテーブルのフルスキャンが行われる。
(2)読み出される行の順は列description に張られたインデクスの並びとは全く関係なく読み出しされる可能性がある。
(3)読み出した行のセットは order by 句の指定によりソートされる。
つまり無理なのではないかと。
試しに where 句を外したクエリを実行するとどうなるか調べてみては?
ソートが行われるかどうかのテストはできる。
0556NAME IS NULL
2009/06/04(木) 21:21:37ID:???Hashインデックスは?
0557NAME IS NULL
2009/06/04(木) 21:29:24ID:???BTreeインデックスはソートの代わりになります。
=> EXPLAIN SELECT aid FROM accounts ORDER BY aid;
QUERY PLAN
--------------------------------------------------------------------------------------
Index Scan using accounts_pkey on accounts (cost=0.00..3975.26 rows=100000 width=4)
(1 row)
0558NAME IS NULL
2009/06/04(木) 21:51:41ID:???ソートせずにインデックススキャンしたい理由が分からない
インデックススキャンのほうが必ず速いと思っているならそれは間違い
実行計画やデータの分布を確認しないと断言できないが
description 列にインデックスを定義してもインデックススキャンにならない原因は
type 列の値が hogehoge である行が少ないからでは?
type 列の値が hogehoge である行が 4 万行に対して 10 数行しかないなら
シーケンシャルスキャンよりも 1 行あたりの処理コストの高いインデックススキャンによって 4 万行を取得し
type 列の値が hogehoge である行をフィルタリングするより
4 万行をシーケンシャルスキャンして type 列の値が hogehoge である行をフィルタリングし
10 数行をソートしたほうがはるかに速くになります
そもそも速くしたいのなら >>545 の言うようにまず type 列にインデックスを定義するべき
0559名無し募集中。。。
2009/06/05(金) 00:25:15ID:gMhUL+S6テーブルの情報がメモリに載るようにすれば多少フルスキャン掛かっても問題ない
0560NAME IS NULL
2009/06/05(金) 01:58:29ID:???「ソートせずに」じゃなくて「ソートが発生しないように」でしょ。
その下に書いてることも間違いだらけ。
唯一合ってるのは「type列にインデックスを定義すべき」ってとこだけ。
0561NAME IS NULL
2009/06/05(金) 08:20:03ID:IZGperrrindexが効くのは データの5%くらいといわれているんだけどね>Oracleの場合ね
0562NAME IS NULL
2009/06/05(金) 17:46:03ID:???558の考え方はソート中心であまりにも本末転倒
まあindexでソートを速くしたいってもともとの話が変なんだが・・・
0563NAME IS NULL
2009/06/05(金) 19:18:24ID:???テーブル名をワイルドカード指定することは可能でしょうか?
例えば、A0,A1というテーブル名のテーブルがあった場合、
SELECT * FROM A*;
のように、テーブル名をワイルドカード指定して、A0,A1の内容を参照したいのですが。
0564NAME IS NULL
2009/06/05(金) 20:44:01ID:???エスパーぢゃねから良く分からないけど、
DBの設計自体がおかしくね?
分かんないヤツは黙っとけ! とか言うなよ?
0565NAME IS NULL
2009/06/05(金) 21:54:17ID:???hogehoge が 1 行しかない場合はソートとなり、
QUERY PLAN
-------------------------------------------------------------
Sort (cost=994.01..994.01 rows=1 width=70)
Sort Key: description
-> Seq Scan on hoge (cost=0.00..994.00 rows=1 width=70)
Filter: ((type)::text = 'hogehoge'::text)
すべての行が hogehoge の場合はインデックススキャンとなる
QUERY PLAN
-----------------------------------------------------------------------------------------
Index Scan using hoge_description_idx on hoge (cost=0.00..3551.42 rows=40000 width=46)
Filter: ((type)::text = 'hogehoge'::text)
俺の言っていること、何か間違ってるかな?
突っ込まれると自信ないが
>>562
本末転倒なことは分かっている
ただインデックススキャンが選ばれる理由を説明したかっただけ
0566NAME IS NULL
2009/06/05(金) 23:03:27ID:???ソートせずにじゃなくてソートが発生しないようにってことじゃないのか
0567NAME IS NULL
2009/06/06(土) 12:00:30ID:???まず
SELECT tablename FROM pg_tables WHERE tablename LIKE 'A%'
でテーブル一覧だしてからちょこちょこいじればいいんでないかい
0568NAME IS NULL
2009/06/06(土) 12:24:14ID:???SQLで直接 FROM に書くテーブルにワイルドカードをするのは無理。
PL/pgSQL とかで動的SQLにするか、A0, A1 の共通の親テーブルを作って
継承 (INHERITS) する手はあるかも。
0569NAME IS NULL
2009/06/08(月) 10:37:12ID:???説明は合ってるしわかるのでおk
>>563
それ、すごい感覚だね!
うまくやりたいなら、568のいうように継承使うのがいいと思う
マニュアル読んでみー
http://www.postgresql.jp/document/pg837doc/html/ddl-inherit.html
シェルでファイルいじる感覚でDB使う人もいるってことか・・・
「プログラマー」や「フレームワーク」がDBを物入れにしか使ってないのに
辟易してる場合じゃないのかもね
0570NAME IS NULL
2009/06/08(月) 11:03:11ID:???プログラムで対応するのが簡単かも
たとえば、SQLで
SELECT tablename FROM pg_tables WHERE tablename LIKE 'A%';
とかで返ってきた結果をひっぱればいいんでない?
0571NAME IS NULL
2009/06/08(月) 17:09:12ID:???元々SQLって非開発者の経理担当者とかでもさわれるように
開発されたモノだから、感覚としては本来の意義に近いのかもね・・・。
DBサーバーみたいに増設するのが大変なところにロジック入れるよりは
より単純な物入れにすべきだと思うけどね。APサーバー側をスケールアウト
できるように設計してで重い処理やったりキャッシュ処理やったり。
クライアントが数えるほどしかコネクション張らないならDBサーバーで
なんでもやった方が早いけどさ。
0572NAME IS NULL
2009/06/08(月) 20:34:54ID:???「ソートせずに」という表現は適切でなかったと反省している
言いたかったことは「ORDER BY 句による並び替えを行わずに」と言うことではなく、
あくまで「実行計画において Sort が選択されないように」ということでした
0573NAME IS NULL
2009/06/08(月) 20:42:14ID:???俺もプログラムで対応するに一票
そもそもワイルドカードでテーブル名を指定する必要があるという状況がアレだが、
無理して SQL のみ(もしくは PL/pgSQL)で対応しようとすると返って手間がかかる
0574NAME IS NULL
2009/06/10(水) 00:15:23ID:???24時間常駐のデーモンが突然
ERROR: could not open relation 1663/89962/98351: No such file or directory :UPDATE
mg_site SET dt_start=COALESCE(dt_start,LOCALTIMESTAMP(0)), dt_last=LOCALTIMESTAMP(0), laststat='200', active=true WHERE site_id=10
と出て落ちたんですが、これってどういうエラーなんでしょうか?
心当たりとしては、この時間帯はちょうどcronジョブで VACUUM FULL + ANALYZE + REINDEX が走ってたんですが
それでこんなことになりますか?
デーモン自体は再起動して何事もなかったかのように動いています。
0575NAME IS NULL
2009/06/10(水) 08:36:36ID:???0576NAME IS NULL
2009/06/10(水) 20:08:42ID:???いい加減なだけかな? 8.2 より昔のバージョンだと、REINDEX とぶつかって
そのエラーになることはあり得る。単にクエリをリトライするしかないと思う。
0577NAME IS NULL
2009/06/10(水) 22:43:06ID:???REINDEX との衝突で起こるのですか。
トランザクションモードとかロックとかで回避できるものでもないんですかね。
瞬間的な事象なら素直にロールバックしてリトライしますが
REINDEXしてる間ずっと起こる可能性があるのは困るですね。
ありがとうございました。
0578NAME IS NULL
2009/06/10(水) 23:37:12ID:???リトライ対象にするって怖いんですけど。。。
0579NAME IS NULL
2009/06/11(木) 07:27:13ID:???古いほうのファイルを見に行ってしまい、ファイルが無いと言っている。
リトライすれば新しいファイルが見えるので大丈夫。
まぁ、ディスクが壊れてファイルが無くなっちゃった時にも
同じメッセージになることはあるから、リトライ回数に上限は必要かも。
8.3 以降ならちゃんと新しいファイルを見に行くようになったから、
リトライするのが心配ならアップグレードしましょう。
0580NAME IS NULL
2009/06/11(木) 23:40:25ID:JRzTn4Mzpsqlodbc35w.dll(オフセット00046bb1だったっけか)で落ちることが
あるんだけど、こんなもん??
パターン掴んでないから詳細はわからんけど、
誰か原因の予想つく人教えてくださいな。
<PC環境>
・OS:WinXP SP2
・PostgreODBC:ver.8.3.4
・H2DB 使用
0581NAME IS NULL
2009/06/13(土) 08:07:19ID:???0582NAME IS NULL
2009/06/13(土) 08:13:22ID:Pbq7ki720583NAME IS NULL
2009/06/13(土) 12:24:24ID:???0584NAME IS NULL
2009/06/13(土) 20:33:23ID:???0585NAME IS NULL
2009/06/13(土) 20:36:23ID:Pbq7ki720586NAME IS NULL
2009/06/13(土) 22:19:27ID:???0587sage
2009/06/13(土) 23:45:26ID:???0588NAME IS NULL
2009/06/14(日) 18:31:33ID:???0589NAME IS NULL
2009/06/16(火) 08:49:31ID:YNjSFTFS0590NAME IS NULL
2009/06/17(水) 19:53:43ID:3VT5X4sH0591NAME IS NULL
2009/06/17(水) 20:41:40ID:???pg_dumpall で ROLE もまとめてダンプするか、
pg_dumpall --roles-only + pg_dump なら期待の動作になるはず。
8.4.3 にはツッコまずにおく。
0592NAME IS NULL
2009/06/17(水) 22:35:46ID:???0593NAME IS NULL
2009/06/18(木) 23:54:40ID:???私はVISTAを使っています。ユーザーアカウント制御をして、いざダウンロードをしようとしたら、モジュールを加えるのを選べみたいな文字が出てきます。
ちなみに英語版のpostgresqlをインストールしようと思っています。
適当に選んでダウンロードしてもうまくダウンロードできません。
そもそも、モジュール (Module)とは、「工学などにおける設計上の概念で、システムを構成する要素となるもの」(WIKI)らしいです。
意味がわかりません。ダウンロードがうまくいかないのはたぶん、このモジュールの選択にある気がします。いろいろ調べてもこのモジュールの選択についてはどこにも記載がないです。
すみませんが、助けてください。お願いします。ちなみに難しいパソコン用語は全くわかりません。でも、がんばって調べます。
よろしくお願いします。
0594NAME IS NULL
2009/06/19(金) 00:34:45ID:???なんか物凄く難しくしてるな。ダウンロード以前の問題だから。
0595NAME IS NULL
2009/06/19(金) 00:38:38ID:GeJezkbU0596593
2009/06/19(金) 01:47:35ID:???インストールマニュアルにはそんなこと書いていませんでした。
postgresqlを選んだのは、外国のゲームに必要らしいのです。画面上に成績を表示させるみたいな感じでしょうか。
インストールまでの、initialize database clusterという画面から、ユーザーネームやパスワード等を入力して次の画面にいくと、enable procedural languagesという画面になって、pl/pgsqlというのにチェックが入ってます。
次の画面で、enable contrib modulesという画面になり、adminpackやら、isn、xml2等といったチェックする項目がたくさん出てきます。それと、
initialize database clusterという画面では、encodingでは、WIN1252を選べと書いてありました。
これほどのものは、コンピューターのプロでない人にとっては、わかるはずもありません。というか、自分が何してるのかもわかりません。
0597NAME IS NULL
2009/06/19(金) 02:50:37ID:???てか、ダウンロードで困ってるのかインストールで困ってるのかはっきりすれ
0598NAME IS NULL
2009/06/19(金) 07:29:20ID:???とりあえず、ぜんぶデフォルトのまま「次へ」で良いんじゃないの?
ちゃんと理解したいなら、「PostgreSQL インストーラ」で検索すれば
解説サイトはすぐ見つかるから、好きにしてくれ。
0599593
2009/06/19(金) 08:10:37ID:???ダウンロードとインストールって別モノだったんですかぁ、知りませんでした。Σ( ̄□ ̄lll)
困っているのインストールが正常にできないということです。
インストールの途中で、エラー、failed to connect to database. procedural languages files are installed, but are not activated in any databases.
(データベースへの接続に失敗しました。ファイルは、インストールされますが、どんなデータベースも動きません。ヤフー翻訳機より。)
と、でてきます。OKを押すと、再びエラー、could noo connect to sever: connection time out [0x000274c/] is the server running on host `127.0.0.1` and accepting tcp/ip connections on port 5432?
(次のものを切断するために接続することができませんでした:接続タイムアウト[0x000274c/]はホスト上で作動するサーバーです「127.0.0.1「またポート5432上のtcp/ip接続を受理すること ライブドア翻訳機)
とでてきます。そしてまたOKを押すと、エラー、failed to connect to the `templete1` database. contrib files are installed, but are not activated in any databases.
(『templete1』データベースに接続することをできません。contribファイルはインストールされるが、少しのデータベースでも動かされません。 ヤフー翻訳機)
とでてきます。そのご、インストールはきちんとされたのかわかりませんが、一応スタックビルダというのが出てくるようになります。
しかし、これではダメっぽいです。きちんとユーザーアカウント制御をして再起動もしています。モジュールはわからないので、とりあえず全部の項目にチェックを入れてみました。
でもダメでした。(o´_`o)ハァ・・・
やっぱりVISTAが悪いのかな。私の頭が悪いのはいうまでもありません。
参考にしている外国のサイトです。http://www.holdemmanager.net/faq/afmmain.aspx?faqid=176
0600593
2009/06/19(金) 09:21:57ID:???デフォルトでもやりました。しかし、同じくエラーになりました。
夜までパソコン環境にありませんので、また夜にこのスレをのぞかせていただきます。
0601NAME IS NULL
2009/06/19(金) 10:32:52ID:???ゲーム諸共あきらめることをすすめる。
そもそもデータベースなんてのはパソコンのライトユーザが直接触って使うような種類のプログラムではない。
時間の無駄だよ。
0602NAME IS NULL
2009/06/19(金) 10:56:32ID:???天然さんだと思うのだけど、大化けすることを期待して
ttp://allabout.co.jp/internet/database/closeup/CU20080412A/
を参考にしてみては。
0603NAME IS NULL
2009/06/19(金) 11:15:03ID:???0604NAME IS NULL
2009/06/19(金) 11:18:19ID:???0605NAME IS NULL
2009/06/19(金) 12:56:16ID:eE7inlmtいいからそのゲーム名を晒せ。
晒せるか?どうなんだ?
釣りとかするつもりじゃないよな?
0606593
2009/06/19(金) 14:16:35ID:???ゲームはエベレストポーカーっていうものです。そしてpostgresqlはその相手の行動をみるためにホールデムマネージャー(上記のURL)というソフトを起動するために必要らしいのです。
>>602さん、今は携帯しなく、そのサイトをみることができませんでしたが、夜にはみて頑張ってみます。ありがとうございます。
ライトユーザーどころか、インターネットユーザーレベルなのです。それなので、このような高レベルのスレに書き込むのは場違いすぎるのはわかっています。低レベルな話をしていて本当にすみません。
0607NAME IS NULL
2009/06/19(金) 15:05:13ID:???0608NAME IS NULL
2009/06/19(金) 15:54:18ID:???新しいな。ワロタ。とにかく死ね
0609NAME IS NULL
2009/06/19(金) 16:00:10ID:???PostgreSQL ユーザが一人増えたと歓迎しましょう。
とはいえ、インストールが終わっても
pg_hba.conf あたりでハマりそうだから、
帰宅途中に本屋に行ってシーラカンスの絵の
PostgreSQL の本 ( 今はもっといいのがあるかな? ) でも
立ち読みするといいよ。
0610NAME IS NULL
2009/06/19(金) 16:07:03ID:???0611NAME IS NULL
2009/06/19(金) 16:17:51ID:???Windows 対応もしているし。
0612NAME IS NULL
2009/06/19(金) 20:26:46ID:???http://jbbs.livedoor.jp/bbs/read.cgi/game/15823/1234405784/63-
0613NAME IS NULL
2009/06/20(土) 05:51:11ID:GLSNLz3f0614593
2009/06/20(土) 19:42:42ID:???データベースへの接続に失敗しました。インストールされる手続き言語ファイルは、どのデータベースでも活動的にされません。と表示されます。
そして、えらー、template1データベースの接続に失敗しました。contribファイルは、いくつかのデータベースでインストールできますが、回復できません。と表示されます。
よくわかりませんが、色々と調べてみたいと思います。
たぶん、これが真の原因の気がします。近所の書店に行きましたが、シーラカンスの表示の本どころか、postgresqlに関する本がおいてありませんでした。
0615NAME IS NULL
2009/06/20(土) 20:07:36ID:???0616NAME IS NULL
2009/06/20(土) 22:02:46ID:???手続き言語やcontribの登録の段階で失敗しているということは、
インストール中の initdb か、その直後のサーバの開始で失敗したと思われる。
実行ファイル自体はインストールできているようだから、
手で initdb したり pg_ctl start したりすれば切り分けできるかもしれない。
...エラーメッセージを読む程度の能力があれば、だが。
0617NAME IS NULL
2009/06/21(日) 00:33:14ID:???理解する努力をしていないカスだ、などと文系の俺が釣られてみる
0618NAME IS NULL
2009/06/21(日) 03:19:09ID:???0619NAME IS NULL
2009/06/21(日) 03:45:50ID:???0620NAME IS NULL
2009/06/21(日) 07:16:11ID:???まぁ、それは置いておき、ポスグレが本当にVistaに入らないか試してみた。
日本PostgreSQLユーザ会から 8.3.7 をダウンロードして、インストール時に聞かれるモジュールは標準のままの指定。
きっちりインストールできるし、スタックビルダも立ち上がるしダウンロードからインストールまでできた。
pgAdminIIIで接続できるのも確認。
データベースクラスタの初期化画面で Localeを English,Ireland、Encodingを WIN1252 にしても一緒。
インストール時の言語をEnglishにしても同じ。
Vistaは日本語版?
たしか >>600 にはデフォルトでもダメだったと書かれているけど、デフォルトでインストールしたら
言語はJapaneseだし、LocaleはCだし、Encodingは Server:UTF-8,Client:SJIS になってるけど。
また、593の言う「initialize database clusterという画面では、encodingでは、WIN1252を選べと書いてありました。 」を
確認してみたけど、件の取り説ページには明示的にエンコーディングを WIN1252 にしなさいとは書かれてない。
なので、>>641で書いてる「インストールの途中でエラーが起きました」も実はPostgreSQLのインストールとは違う部分での話しな気がする。
593は意図的に隠しているのか、天然で抜けてるのか、特殊環境を使ってるのか、よく解らない。
0621NAME IS NULL
2009/06/21(日) 07:25:02ID:???0622NAME IS NULL
2009/06/21(日) 08:48:51ID:???0623NAME IS NULL
2009/06/21(日) 09:13:29ID:???0624NAME IS NULL
2009/06/21(日) 09:19:21ID:???>>620 おまえ普通に賢くて問題解決能力あるよなぁ。
この差はどうしようもないんだろうなと思う。
0625NAME IS NULL
2009/06/21(日) 10:34:03ID:???これで法律をあつかうのか。。。
0626NAME IS NULL
2009/06/21(日) 12:20:13ID:???こんな問題も分析、解決できない奴が何できるの?
0627NAME IS NULL
2009/06/21(日) 15:57:00ID:???法律については何でも解答できるらしい・・・
>>606参照
0628NAME IS NULL
2009/06/21(日) 18:36:21ID:???選択肢がいっぱい出てきてたって、その説明に載ってないなら
そのまま次に進めばいいだけなのに、何を迷ってんだか。
インストールしたら初期DBを作成してそこから始めるのに
作成する前にいきなり使おうとしたエラーだな。
作ってないのに接続しようとしたら「データベースへの接続に失敗しました」と出るのは当たり前。
0629NAME IS NULL
2009/06/21(日) 21:18:42ID:???0630NAME IS NULL
2009/06/22(月) 19:19:47ID:???textは無制限だと思ったのですが、どこか設定する必要があるのでしょうか?
■phpPgAdmin
4.2.2
■PostgreSQL
7.4.5
■SQL
INSERT INTO "public"."image" ("id", "base64") VALUES (nextval('public.image_id_seq'::text), '10544バイトの文字列')
■エラー
ERROR: index row requires 10560 bytes, maximum size is 8191
■テーブル
CREATE TABLE image (
id SERIAL PRIMARY KEY,
base64 text NOT NULL
);
0631NAME IS NULL
2009/06/22(月) 20:30:09ID:???インデックスは8kB以内という制限に引っかかってるように見える。
0632NAME IS NULL
2009/06/23(火) 02:34:25ID:???0633630
2009/06/23(火) 09:52:53ID:???見たらINDEX作ってました。削除したら問題なくINSERTできました。
byteaではなくtextなのは、dumpしやすいなどの記事を見たからって程度で特に理由はないです。
0634NAME IS NULL
2009/06/23(火) 11:22:56ID:???ハッシュ値とかにしたほうが良いかもね。
0635NAME IS NULL
2009/06/23(火) 23:33:50ID:l3lcnlyapercentile(百分位数)や quartile(四分位数)を求める集約関数を作ろうとして、
C言語によるユーザ定義関数でのヒープについて質問した者です。
その後、結局は挫折してしばらくほっといたんですが、食わず嫌いで何となく避けてた
PL/pgSQL をこのほど使ってみたら、いとも簡単に解決しました。
で、お尋ねしたいのですが、この PL/pgSQL みたいな手続き型言語って、postgreSQL に
特有のものですか、それとも他のDBサーバ(Oracle や MySQL など)でも普通に用意
されていて、普通に使うものなんでしょうか? 言語仕様も含めて同様なものを備えて
いるのかな? pgsql に特有なものにあんまり入れ込んでもちょっとアレだしなぁ、
と思ってお尋ねします。
0636NAME IS NULL
2009/06/23(火) 23:45:54ID:???そこら辺は気にしすぎない方が良いと思う
MSSQLServerでもTransact-SQLとかあるし
言語仕様はそりゃDB特有の部分はあるだろうけど
0637NAME IS NULL
2009/06/23(火) 23:48:49ID:???Oracle には PL/SQL という似ているものがありますが、いろいろ違います。
が、こういうのを ストアドプロシージャ (stored procedure) と総称します。
んで、ストアドプロシージャは、DBMS によってあったりなかったりします。
# PL/SQL を PL/pgSQL に移植するオシゴトがあるとかないとか。
PostgreSQL では他にも、PL/perl やら PL/python やら PL/ruby なんてものがあったりもします。
0638635
2009/06/23(火) 23:54:41ID:???ヘンタイ とか キティガイ とか後ろ指さされずに使えるってことですね。 安心しました。
ありがとうございました。
0639NAME IS NULL
2009/06/24(水) 07:55:04ID:???0640NAME IS NULL
2009/06/24(水) 23:03:20ID:f8jm41Kvsolaris10にバンドルされているpostgresql8.3を起動させたく、
#svcadm enable postgresql_83:default_32bit
とコマンドを打ってみたのですが、
svcs -a
で確認してみるとpostgresql_83:default_32bitがmaintenance状態になっています。
svcs -x postgresql_83:default_32bit
で確認してみると、
原因:再起動が速すぎます
と出ます。
svcadm clear postgresql_83:default_32bit
としてみたのですが変わらずmaintenance状態です。
solarisはVMware上で動かしています。
solarisの設定はインストール時から特に変えていません。
なぜ動かないのかが分らず頭を抱えています。
どこか設定など足りない箇所があるのでしょうか。
どなたか詳しい方居りましたら教えて頂けないでしょうか
0641NAME IS NULL
2009/06/26(金) 15:29:02ID:???unix板のSolaris for x86スレで聞いてみたら?
0642NAME IS NULL
2009/06/26(金) 17:05:16ID:???0643593
2009/06/26(金) 19:56:03ID:???あれから、いろいろ調べ、ポスグレの本とか買ったりして試してみたものの、やはりインストールが正常にすることができませんでした。
もちろん皆さんが指摘してくれたことも、本とか参考にしながらやってみたもののできませんでした。
そのうち、windowsインストーラの調子が悪くなり何もインストールができなくなりました。
仕方ないのでパソコンをリカバリして再びダウンロードしてみたら、普通にダウンロードできました。
なので、理由は不明です。きっと気づかぬうちに変な設定をしていたのでしょうか。
協力していただいたみなさんありがとうございました。特に>>620さんは、わざわざポスグレをアンインストールして、インストールしてくださったんだと思います。
本当にありがとうございました。
0644NAME IS NULL
2009/06/27(土) 18:32:06ID:baFtvEKM今度から質問する前にリカバリすれ。
0645NAME IS NULL
2009/06/27(土) 21:12:52ID:???たぶんウィルスに多数感染してたんだとオモワレ
アーメン
0646NAME IS NULL
2009/06/28(日) 09:11:45ID:???0647NAME IS NULL
2009/06/30(火) 16:19:49ID:cTyHSoG+ビューしているデータを紙にプリントしたいのだが
何を使えばいいのかな?
0648NAME IS NULL
2009/06/30(火) 16:31:25ID:???0649NAME IS NULL
2009/06/30(火) 20:55:48ID:???0650NAME IS NULL
2009/07/02(木) 02:01:22ID:???0651NAME IS NULL
2009/07/02(木) 02:55:02ID:???今、WITH RECURSIVEを使いたくなるような案件がさっぱり無いや。
0652NAME IS NULL
2009/07/02(木) 09:52:53ID:???忙しいのかな…。
0653NAME IS NULL
2009/07/02(木) 09:54:22ID:???PostgreSQL が使えないのだけど、どうしてる?
0654NAME IS NULL
2009/07/02(木) 22:15:32ID:???使わない。以上。
0655NAME IS NULL
2009/07/03(金) 06:28:57ID:???0656NAME IS NULL
2009/07/04(土) 09:17:14ID:eygNMagZなに?
じゃあPHPのバージョン下げるばいいじゃないかって?
お、ま、まさか、、、今頃
0657NAME IS NULL
2009/07/05(日) 21:07:49ID:???windowsでインスコする場合に
ver8.1〜ver8.4で何が違うのか教えていただきたい
0658NAME IS NULL
2009/07/05(日) 22:40:25ID:???日本PostgreSQLユーザ会のリリースニュースから辿って調べてみては?
http://www.postgresql.jp/news
8.1
見つかんない
8..2
http://www.postgresql.org/about/press/presskit82.html.ja
8.3
http://www.postgresql.org/about/press/presskit83
http://www.postgresql.org/about/press/features83
8.4
http://www.postgresql.org/about/press/presskit84.html.ja
ソース取得して ChangeLog 読めば事細か書いてあるんじゃないかと思う。
0659NAME IS NULL
2009/07/06(月) 00:02:21ID:???ちょっくら読んで調べてみます
こんな初心者丸出しの質問に答えてもらってありがとうございます
0660NAME IS NULL
2009/07/06(月) 02:10:24ID:???0661NAME IS NULL
2009/07/06(月) 02:51:26ID:???使えるようにしちゃいなよ!
オープンソースの醍醐味だよ!!
0662NAME IS NULL
2009/07/06(月) 10:19:10ID:???0663NAME IS NULL
2009/07/07(火) 00:36:32ID:vLTSOaRuWinXP+PostgreSQL8.3+IIS5.0+ASP(VBScript)でwebアプリを作っています。
webサーバ内にDBMSを同居させて、OLEDBで接続しています。
つまづいているのはレコードセットでの更新です。
こんな感じのコードを書いているのですが(VBScript)↓
Set objCon= Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
objCon.ConnectionString = Application("ConStr")
objCon.Open
strSQL = "SELECT * FROM M_HOGE"
strSQL = strSQL & " WHERE HOGE_CODE1 = '" & i_hoge_code2 & "'"
strSQL = strSQL & " AND HOGE_CODE2 = '" & i_hoge_code2 & "'"
objRS.Open strSQL, objCon, 3
if objRS.EOF = false then
objRS.edit
objRS.Fields("HOHO").Value = "12345"
objRS.update
end if
objRS.close
このコードを実行しても、「HOHO」フィールドに「12345」が入らないのです。
なお接続文字列は以下の通りです。
Provider=PostgreSQL OLE DB Provider;Password=XXX;User ID=XXX;Data Source=localhost;Location=TESTDB;
なおレコードセットを使用せずにUPDATE文で記述すると正常に更新されます。
が、バイナリファイルをbyteaフィールドにstreamで格納する要件があるため、レコードセットは
避けて通れないのです。。
詳しい方いらっしゃいましたらアドバイスお願いいたします。
0664NAME IS NULL
2009/07/07(火) 01:45:06ID:???0665NAME IS NULL
2009/07/07(火) 02:42:23ID:???入らないってのはエラーも出てないのに入らないって事ですか?
エラーが出てるならそのエラーメッセージが無いと解らないと思いますよ。
もし、
ADODB.Field: 現在の Recordset は更新をサポートしていません。プロバイダか、選択されたロックタイプの限界の可能性があります。
なんてエラーメッセージならあなたの執った方法では無理、って事です。
0666NAME IS NULL
2009/07/07(火) 12:37:21ID:R630TAvO#SQL鯖だと鯖カーソル無いから、つければとおりそうだけど
#pgsqlは不明
0667NAME IS NULL
2009/07/07(火) 18:12:06ID:i53/51Ym>objRS.Open strSQL, objCon, 3
を
objRS.Open strSQL, objCon, 2, 3
(objRS.Open strSQL, objCon, adOpenDynamic, adLockOptimistic)
にしてみたら?
あと、なるべく”2”とか”3”とかの「単なる数字」じゃなくて定数を使った方がいいと思う。
0668NAME IS NULL
2009/07/07(火) 22:44:40ID:vLTSOaRuエラー取得してみたら、まさに「現在の Recordset は更新をサポートしていません。」が出力されていました。
そこでCursorType、LockType、、をご教授のように変更してみましたがなぜか反映されず。
(下のような感じ)
objRS.CursorType=2
objRS.LockType=3
objRS.CursorLocation=3
四苦八苦の結果、OLDDB接続をODBC接続に変更したら書き込まれるようになりました。
OLEDBドライバにはバグがあるのでしょうか。。?
ともあれ。本当にありがとうございました。
0669NAME IS NULL
2009/07/07(火) 23:06:19ID:vLTSOaRu先の投稿で少し触れていましたが、byteaフィールドに画像データを書き込む要件があります。
で試してみたのですが、やはり上手くいきませんでした。
こんな感じです。
<テーブル>
create table m_hoge {
my_id character(5) NOT NULL,
my_image bytea
constraint m_hoge_pkey primary key(id)
}
<ソース(抜粋)>
・・・
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.open
objStream.Position = 0
objStream.Type = 1 'adTypeBinary
objStream.LoadFromFile "<file path>"
objRS.Fields("my_image").Value = objStream.Read
<ここでエラー発生>
エラー内容は「複数ステップの操作でエラーが発生しました」です。
格納する画像ファイルは3Kバイト程度ですが、DefinedSizeでmy_imageフィールドのサイズを
チェックしたところ255(byte?)と出力されていました。格納領域が足りないからエラーと
なっている感じなんですが、解決方法が判りません。。
重ね重ね恐縮ですが、何卒お知恵をお願いいたします。
0670NAME IS NULL
2009/07/07(火) 23:11:53ID:???だからスレ違いだと
0671NAME IS NULL
2009/07/08(水) 20:04:39ID:???2009-07-08 20:00:00.035189 のように .035189 というのが付きます。
これを付かないようにするにはどうしたらいいでしょうか?
0672NAME IS NULL
2009/07/08(水) 21:14:13ID:???自分はnowじゃなく CURRENT_TIMESTAMP(0) でやってる。
トランザクションの開始時刻なので、それで問題なければ。
0673NAME IS NULL
2009/07/08(水) 21:18:24ID:???www=#
www=# select date_trunc('second', localtimestamp);
date_trunc
---------------------
2009-07-08 21:15:56
(1 row)
www=# select date_trunc('second', now());
date_trunc
------------------------
2009-07-08 21:15:57+09
(1 row)
www=#
localtimestamp にTZが付かないのでそっちを使ってみた。
0674NAME IS NULL
2009/07/09(木) 01:02:42ID:???値を保存する側の列を timestamp(0) で定義すべきじゃないの?
0675671
2009/07/09(木) 10:02:24ID:???ありがとうございます。
特に考えはなく、何かの本に書いてあったのでそのまま now してました。
応用きかなくて申し訳ないのですが、
created_at timestamp default now(),
の場合はどうでしょうか。
0676671
2009/07/09(木) 10:23:13ID:???これでいいのでしょうか?
0677NAME IS NULL
2009/07/10(金) 14:38:17ID:AjxJ6BfFそれ以上何か求めてるらしいが。
0678671
2009/07/10(金) 14:55:44ID:???0679NAME IS NULL
2009/07/10(金) 17:18:01ID:???0680NAME IS NULL
2009/07/11(土) 00:42:25ID:???事でわ?
0681NAME IS NULL
2009/07/11(土) 13:50:32ID:???ミリ秒まで保存しておいて、表示のときに timestamp(0) にキャストしても良いかも。
0682NAME IS NULL
2009/07/13(月) 18:30:25ID:???見た目を決めるのが定石なんじゃない?
同じデータでも管理画面では詳細まで、メンバー画面では日付までしか表示しないとか
簡単に切り分けられるように。
そもそもDBにミリ秒が要らないならまあそれでもいいけど
0683671
2009/07/13(月) 18:44:25ID:???View にしても、日付のチェックにしても、
毎回ミリ秒を捨てていたので、
最初からミリ秒なしにできないかな、という考えでした。
0684NAME IS NULL
2009/07/13(月) 23:53:04ID:???0685NAME IS NULL
2009/07/14(火) 14:41:17ID:???0686NAME IS NULL
2009/07/14(火) 16:15:05ID:???0687NAME IS NULL
2009/07/16(木) 00:29:58ID:???to_date関数の仕様が変わっててびっくり。
ある仕事でなぜか年月日がばらばらに保存してある
テーブルに出会ったので日付でbetweenするために
使ってみたんだけど、確かバージョン7.4。8.3にしたらエラーだわ。
将来メンテする人には気の毒なことしてしまった。
0688NAME IS NULL
2009/07/16(木) 01:29:39ID:???dateに限って言えば内部は1970/1/1からのミリ秒をlongで保存してるだろうから
切り落としした方が遅くなるんじゃないかと思ったり思わなかったり
0689NAME IS NULL
2009/07/16(木) 13:55:53ID:qWUWM5Doライセンスの関係で、
PostgreSQLキターーーーーーーーーーーーーーーーーーーってなる日も近い?
とりあえず、
WEB系でシェアの高い、Wordpres,Xoopsあたりが、postgresに対応して欲しい
0690NAME IS NULL
2009/07/16(木) 15:08:44ID:???近い将来では、PostgreDQL北ーーーーとならないんでね?
0691NAME IS NULL
2009/07/18(土) 10:54:37ID:???0692NAME IS NULL
2009/07/26(日) 09:33:21ID:???消えるなりリンクを張るなりしてもらえんかなーと思う今日この頃
0693NAME IS NULL
2009/07/26(日) 22:48:53ID:???0694NAME IS NULL
2009/07/27(月) 14:51:16ID:???0695NAME IS NULL
2009/07/27(月) 14:59:20ID:???撃沈w
0696NAME IS NULL
2009/07/27(月) 15:17:16ID:???0697NAME IS NULL
2009/07/27(月) 15:20:50ID:???0698NAME IS NULL
2009/07/27(月) 15:39:49ID:???0699NAME IS NULL
2009/07/28(火) 01:18:13ID:???0700NAME IS NULL
2009/08/02(日) 16:10:46ID:SACbLVCHどうやらバックアップ時の DB に EUC として不正な文字を含むレコードがあったらしく、
invalid byte sequence for encoding "EUC_JP": XXXX
とエラーが出てリストアできません。
エラーを無視して強行する方法はあるでしょうか。
不正な文字部分は適当な文字(? とか)に置き換えてリストアされて構いません。
0701NAME IS NULL
2009/08/02(日) 16:39:22ID:???というのをやってた人がいたな。俺も参考にしたっけ。
0702NAME IS NULL
2009/08/03(月) 00:07:18ID:???それともXXXXには、いろんな数字の組み合わせが入るのかしら。
XXXXが取りうる値の範囲は? いわゆる外字領域? それとも本当に単に不正なバイト列?
0703NAME IS NULL
2009/08/03(月) 02:23:51ID:???0704700
2009/08/03(月) 05:43:09ID:???不正な文字置換スクリプトを書かなくちゃいけないので、まだ試してはいないのですが・・・
ちなみに不正な文字って、どうやら生JISコードっぽいです。
数百万行のうちの数行を除いてきちんと EUC なんですが、PHPアプリのバグかなにかで文字コード変換に失敗したまま DB に書いちゃったんでしょうね。
0705NAME IS NULL
2009/08/03(月) 10:12:07ID:???8.Xにするとき苦労したわ。バックアップデータも数十GBだから
間に挟むのも時間かかって無理そうだったんで>>701でやった
0706NAME IS NULL
2009/08/04(火) 09:22:28ID:h6XVbOdQ0707NAME IS NULL
2009/08/04(火) 10:31:38ID:???0708NAME IS NULL
2009/08/04(火) 10:34:26ID:???0709NAME IS NULL
2009/08/04(火) 10:52:21ID:HcV1M4ZQ0710NAME IS NULL
2009/08/04(火) 11:50:10ID:???どっちも使えるが最高。
0711NAME IS NULL
2009/08/04(火) 12:37:05ID:???ほかの言語や何かだと荒れるのにこの流れ。ステキ。
0712NAME IS NULL
2009/08/04(火) 13:18:04ID:???最初にやってたSRAの人達が初心者ウエルカムだったのもあるかもしれん
出だしがJavaHouseみたいなコミュニティだったら
もっと殺伐としてたと思う
0713NAME IS NULL
2009/08/04(火) 15:57:49ID:???それを聞いて安心しますた^^
0714NAME IS NULL
2009/08/04(火) 22:04:16ID:???0715NAME IS NULL
2009/08/04(火) 22:32:04ID:???0716NAME IS NULL
2009/08/04(火) 22:53:21ID:???Query Browserも未だに日本語書けないし、5.0は日本語マニュアルもないし。
PostgeSQLはそこがちゃんとしてるから好き。
でも仕事で使わされるのはMySQLなんだよなぁ・・・。
0717NAME IS NULL
2009/08/04(火) 23:00:05ID:???レンタル鯖だと泣ける
0718NAME IS NULL
2009/08/05(水) 08:13:53ID:???何が劣ってるか 否 何が不足してるかを
周知させるだけでいいでしょう。
解決されるまで待つか 自らそれに参加するか。
といいつつMySQLは知らないです。
アプリで使っただけです。
Oracleと似てるのかな?わはは
0719NAME IS NULL
2009/08/05(水) 09:33:06ID:WmA10RkOにてねーよw
昔XOOPS使う為に触ったのが最初かな
psqlは強力すぎるからなぁ
0720NAME IS NULL
2009/08/05(水) 09:45:46ID:???なんだか勝った気がした
0721NAME IS NULL
2009/08/05(水) 12:25:30ID:???誰がもうかっとんねんって感じ。
0722NAME IS NULL
2009/08/05(水) 15:07:12ID:???こないだもライセンスがどうのとか言ってたけど、結局どうなったんだろ。
8.4.0をテストサーバに入れてautovacumeを有効にして最低限の設定だけして使ってみたが
8.2でautovacumeを無効にしている環境より1.3倍ぐらい速い・・・。
内部の仕組みが変わったのもあるだろうけど、なにより
これまでの設定がイマイチだったということだろうか。
0723NAME IS NULL
2009/08/05(水) 16:14:59ID:???もうわすれてまった。
0724NAME IS NULL
2009/08/05(水) 23:19:58ID:???あ、ごめん、忘れてた。
pgsql-jpのメール(それ以外も含めて)はローカルで全文検索できるようにしているんで忘れてた。
明日8/6に確実にJPUGの人に言うだけは言っておく、忘れてなければ。
ただ、サーバ担当の人じゃないんですぐに対応できるかは怪しい。
いっそ、中の人になっちゃうのが早いかも。
0725NAME IS NULL
2009/08/06(木) 02:28:58ID:???0726652
2009/08/06(木) 09:54:01ID:???伝言、よろしくお願いします。ありがとうございます。
ttp://old.postgresql.jp/PostgreSQL/pgsql-jp.html
の一番上にある「メーリングリストの移行に関するお知らせ」は
2002 年の話なので一番下でいいだろうとか、
ML アーカイブは一番下ではなく、もう少し上がいいだろう、
とかいろいろありますが、実際のスキルはお恥ずかしい限りなので。
0727NAME IS NULL
2009/08/07(金) 11:13:16ID:???num | str
---------+-----------------
{3,4} | {{a,b},{c,d}}
select str[1] from test;
を実行しても{a,b}が返ってこないのはなぜですか??
0728NAME IS NULL
2009/08/07(金) 21:34:42ID:???配列の扱いは、ほかのプログラム言語と比べると貧弱だと思う。
標準SQLの規定なのか、Postgresの制限なのかはわからないけど。
str[Lo:Hi] を使うと、{ } が1段深いものの、↓まではできた。
select str[1:1] from tbl;
str
---------
{{a,b}}
0729NAME IS NULL
2009/08/07(金) 23:04:27ID:???使ってて、ポスグレみたいにvarchar配列にaggregateできれば、とか思うことは結構あるんだが
0730NAME IS NULL
2009/08/08(土) 04:38:46ID:???ERROR: multidimensional arrays must have array expressions with matching dimensions
ホント貧弱だし、なんかstrict気味だよね。もっと柔軟性あってもいいと思う。
でも便利に使ってます。
あとは、行型⇔配列が透過的に扱えるとウレシイんだけど。
0731NAME IS NULL
2009/08/08(土) 07:26:37ID:???っ array_agg(), unnest() @8.4
0732730
2009/08/09(日) 00:14:24ID:???ありがとー。
というか、古めのバージョンでも generate_series を組み合わせると
比較的簡単に記述できてたのね...。ちょっと目から鱗。
ttp://www.postgresonline.com/journal/index.php?/archives/125-PostgreSQL-8.4-unnest-and-generate_series.html
0733NAME IS NULL
2009/08/09(日) 22:19:12ID:???正式版が出たので入れ替えようとしました。
プログラムの削除からはProgram Files (x86)\PostgreSQLフォルダが削除されないので、
手動でやろうと思ったのですが、おまえには資格がないと怒られます。
Administratorユーザーで強制削除したいのですが可能でしょうか。
attrib -r -s -h とか、プロパティから所有者を変えようとかやってみたんですがダメでした。
0734NAME IS NULL
2009/08/10(月) 01:02:05ID:???Vistaあんまり詳しくないけど、管理者としてコマンドプロンプト開いて
・explorer.exeを実行して、目的のフォルダを削除
・目的のフォルダをdel
でいけるんでないの?
0735727
2009/08/10(月) 09:54:01ID:???なるほど、ありがとうございます。
表記は同じでもスライスとは違う挙動をしますね・・・
str[1:1]がstr[1]と違う結果なのはなぜなんでしょう??
str[2:2]で{{c,d}}が取り出せるのはなんとなく納得できるのですが。
0736NAME IS NULL
2009/08/10(月) 13:36:25ID:???ありがとうございます。
アクセス権ががっちり設定されていてできませんでした。
8.3のフォルダは削除できたんですが。
8.4のフォルダをリネームして(リネームはできた)、新しくインストールしました。
いつかは消したいんですが、しばらくこのままで行こうと思います。
0737NAME IS NULL
2009/08/10(月) 14:32:33ID:???進展あったられぽよろ。
0738NAME IS NULL
2009/08/10(月) 17:03:24ID:???管理者でログインして、管理者権限で開くにしててもダメって事?
シールドアイコンついてる?
0739NAME IS NULL
2009/08/12(水) 02:19:47ID:???OS再起動後、フォルダのプロパティをみて、フォルダの所有者が誰になっているか見てみる。
所有者がカラの事があるので、自分のアカウントを所有者として設定し、それから消してみる。
アンインストールが半端に終わると起こる事がよくある。
0740NAME IS NULL
2009/08/12(水) 16:09:05ID:???pg_dumpallでバックアップを取ろうとしたところ
pg_dump: schema with OID 18841 does not exist
と言われてダンプできず困ってます。
0741740
2009/08/12(水) 19:56:27ID:???0742NAME IS NULL
2009/08/13(木) 10:29:10ID:???--schema-onlyとか--data-onlyとかいろいろわけてやってみるのがいいかと
0743NAME IS NULL
2009/08/14(金) 22:41:29ID:???言ってみたけど、他にもサーバ関連の作業があって復旧の見込みは当面なさそう
なので Namazu よりも Google を使ったほうがよさそう
検索したいキーワードに加えて site で pgsql-jp の保存書庫を指定すれば OK
(わざわざ説明することでもないかもしれないけど)
site:ml.postgresql.jp/pipermail/pgsql-jp/
と思ったが、JPUG のサイトには 2008 年 12 月までしかないね
MLog ってサイトが ML のアーカイブを公開しているので
そっちを指定したほうがよさそう
site:mlog.euqset.org/archives/pgsql-jp.ml.postgresql.jp/
0744NAME IS NULL
2009/08/15(土) 01:07:08ID:???0745726
2009/08/15(土) 09:42:31ID:???ありがとうございます。
site:mlog.euqset.org/archives/pgsql-jp.ml.postgresql.jp/
こんなのあったんですね。
ここを Google カスタム検索で置いておけば、
HTML だけの変更でいいかも。
0746NAME IS NULL
2009/08/15(土) 11:45:09ID:???0747NAME IS NULL
2009/08/15(土) 12:55:43ID:???Google なら、質問に対して、返答がくっついたような検索結果になるし。
0748NAME IS NULL
2009/08/15(土) 16:27:53ID:2vvkaVqGgoogle で検索しても解決法がいまいちでてきません。
どのようにしたらよろしいでしょうか?
お教えください。
The database cluster will be initialized with locale ja_JP.EUC-JP.
initdb: encoding mismatch
The encoding you selected (UTF8) and the encoding that the
selected locale uses (EUC_JP) do not match. This would lead to
misbehavior in various character string processing functions.
Rerun initdb and either do not specify an encoding explicitly,
or choose a matching combination.
0749NAME IS NULL
2009/08/15(土) 17:04:58ID:???0750NAME IS NULL
2009/08/15(土) 17:20:05ID:???v8.4で日本語のメッセージカタログが入ったのは良かったかもしらんね。
0751NAME IS NULL
2009/08/15(土) 23:31:36ID:???日本語メッセージカタログ、お疲れ様です
0752NAME IS NULL
2009/08/16(日) 00:11:07ID:???0753NAME IS NULL
2009/08/16(日) 08:44:00ID:???Cロケールでよいなら --no-locale または --locale=C。
日本語ロケールを使いたいなら、--locale=ja_JP.UTF-8。
お好みで。
0754NAME IS NULL
2009/08/16(日) 12:20:07ID:???0755NAME IS NULL
2009/08/16(日) 12:54:56ID:???それはデマ。エンコーディングとロケールのミスマッチが原因。
最近は、正しい組み合わせかをチェックするようになったから(そのエラーメッセージが 748)、
ミス設定も減ったし、日本語ロケールを使いたければ使えばいい。
ただ、所詮、ひらかな カタカナ 漢字の読み なんかをうまく扱ってくれるわけではない
(まぁ当たり前だけど)から、C にして速度を稼ぐほうが良い気はする。
メッセージはいつでも変更できるから、英語が苦手ならば
--no-locale で初期化しておいて、lc_messages だけ ja にすればいい。
0756NAME IS NULL
2009/08/18(火) 22:24:21ID:S73O4dP3COPYコマンドでローカルのCSVをリモートのDBへ登録する方法ないですかね?
0757NAME IS NULL
2009/08/18(火) 22:26:34ID:???条件が漠然としすぎ
ローカルで psql が動くならそれで
0758NAME IS NULL
2009/08/18(火) 22:56:37ID:???0759NAME IS NULL
2009/08/18(火) 23:00:29ID:???0760NAME IS NULL
2009/08/18(火) 23:02:56ID:???申し訳ない。psqlで、COPY発行してもできなかったけど
やる方法あるのですか?
>>758
その方法しかないですかね・・・
0761NAME IS NULL
2009/08/18(火) 23:06:21ID:???制限された環境だから
STDINだと、標準入力に渡すのに、だいぶ手間が必要なんで
STDINはあきらめました。
PSQLでCOPY発効してもだめだったけど
単にミスってただけですかね?
ちなみに、リモートのDBにCOPYするのに
PSQLでCOPYだと、ファイルのパスはローカルのパスでよいんですよね?
0762NAME IS NULL
2009/08/18(火) 23:41:51ID:???STDINってのはローカル (psql) 側のことだぞ?
それに制限なんて、シェルへのリダイレクトを禁止されているのか?
あと、psql の COPY と \copy は全く別物。\copy ならローカルのパスでいける。
0763NAME IS NULL
2009/08/18(火) 23:41:53ID:???0764NAME IS NULL
2009/08/18(火) 23:44:38ID:???・手打ち
・端末エミュレータにペースト
しかないと思っているとか
0765NAME IS NULL
2009/08/18(火) 23:50:23ID:???お前がパイプを知らないことは理解できた。
0766NAME IS NULL
2009/08/18(火) 23:51:18ID:???http://www.postgresql.jp/document/pg800doc/html/app-psql.html
の \copy の説明を読めば分かるんじゃないかと。
0767NAME IS NULL
2009/08/18(火) 23:52:34ID:???ローカルのシェルの利用がかなり制限されてるんですよね。
パーミッションとか、パスでのコマンドの制限とか不便極まりない。
psqlの\copyは、ローカルのパスで試して、
エラーの内容がCOPYコマンドと同等だった気がするけど
明日再度試してみます。
>>763
一応わかってたつもりだったんだけど
上に書いていた通り、同じエラーが出た気がして・・・
明日試してます。
>>764
その辺りは大丈夫。
>>765
一応知ってるつもりです。あくまで、一応ですが。
0768NAME IS NULL
2009/08/18(火) 23:54:23ID:???ありがとう。
自分の勘違いな気がするから
明日また試してみます。
0769NAME IS NULL
2009/08/19(水) 00:25:54ID:???chroot環境渡したらこれじゃ何もできないってジリジリ納期延ばしてきた奴
0770NAME IS NULL
2009/08/19(水) 13:21:39ID:???削除することって出来ませんか?
日本語で列名を定義した時点で問題なのですが、
文字化けしてしまっていて、ALTAR TABLEどころか、
ACCESSやpgAdminでデータを開くことも出来ません・・・。
0771NAME IS NULL
2009/08/19(水) 14:11:20ID:???GUIツールじゃなくてpsqlでやってみ
0772NAME IS NULL
2009/08/19(水) 15:14:47ID:???¥d テーブル名 で
テーブル定義表示させると、
カラム名が文字化けしているんです。
カラム1 | integer | default 0
カラム2 | integer | default 0
カラムもじばけ integer | default 0
カラム4 | integer | default 0
といった感じ
そのカラム名をコピペで
ALTER TABLE table_name RENAME カラムもじばけ to new_col_name;
すると、syntax errorです。
「 カラムもじばけ」って書いてあるところは、
実際にはわけわからん文字と記号ですw
0773NAME IS NULL
2009/08/19(水) 15:44:01ID:???0774NAME IS NULL
2009/08/19(水) 15:45:17ID:???どうしても無理ならテキストでダンプして直接書き換えてりストアしてみては
0775NAME IS NULL
2009/08/19(水) 15:48:42ID:???コンソールは送受信ともEUC-JPです。
0776770
2009/08/19(水) 15:53:46ID:???新規テーブルつくって、
データコピーして、リネームすればいけると思うけど、
それ以外の解決方法があるかなぁと・・・。
0777NAME IS NULL
2009/08/19(水) 15:53:53ID:???やると何か変わる?
0778770
2009/08/19(水) 16:12:49ID:???SET client_encoding TO EUC_JP; をおこなったら、
文字化けの部分がちょっと少なくなり、
パイプが含まれていたのが、
パイプ含まなくなりました。
今まで
カラムもじばけ integer | default 0
SET client_encoding TO EUC_JP; を行った後
カラムもじば | integer | default 0
ためしにコピペでALTER TABLE RENAME したけど、
やっぱり syntax errorです。
0779NAME IS NULL
2009/08/19(水) 16:41:18ID:???してdb.txtの文字化け部分を書き換えて
createdb test
psql test < db.txt
とかで戻して試してみては
0780NAME IS NULL
2009/08/19(水) 19:34:33ID:???0781NAME IS NULL
2009/08/20(木) 11:41:30ID:S8uMOV4c0782NAME IS NULL
2009/08/20(木) 12:00:26ID:???ここから新しいの選んで使えばいいと思うよ。
0783NAME IS NULL
2009/08/24(月) 16:51:25ID:???0784NAME IS NULL
2009/08/24(月) 17:00:24ID:???0785NAME IS NULL
2009/08/24(月) 17:04:10ID:???変な話なんですがSQLサーバーとかOracleに比べて業務で使用するのは
あまり聞かないので・・・信頼性とか
まあお金や顧客管理はしないのでそれほど重要なデータを格納するわけでもないのですが・・・
0786NAME IS NULL
2009/08/24(月) 17:14:58ID:???どちらにしろ絶対数的にはMSやOracleに比べて少ないと思うけど、
信頼性に重大な問題があったら、それこそMSやOracle近辺から騒ぐかもだから、
便りがないのは無事な証拠かもね。
0787NAME IS NULL
2009/08/24(月) 17:20:24ID:???最近のバージョンなら良いけど、8.0〜8.1あたりはWindows版特有のバグも多かったし。
同じハードウェアならWindowsよりはUNIX系のほうが速いし、64bit対応もUNIXだけ。
OSの選択権があるなら、Windowsは使わないなぁ。
PostgreSQL自体は同じだから信頼性は変わらないとは思うが、ハードウェアはケチっちゃダメ。
Windowsだと比較的ハードウェアもショボいことが多くて、それがトラブルの原因になったりする。
ディスクが、ライトバックしているのにバッテリバックアップしてなかったりとか。
0788NAME IS NULL
2009/08/24(月) 18:11:13ID:???>>787
WindowsServer2003は決まっています
ハードはショボいのです
予算が無いのでフリーのDBをと思ったわけです
MySQLもとは思いましたが、Postgresで行こうかな
0789NAME IS NULL
2009/08/25(火) 14:27:25ID:???0790NAME IS NULL
2009/08/25(火) 16:22:42ID:???0791NAME IS NULL
2009/08/28(金) 08:39:44ID:???0792NAME IS NULL
2009/08/28(金) 14:08:04ID:???0793NAME IS NULL
2009/08/28(金) 14:22:36ID:???0794NAME IS NULL
2009/08/28(金) 14:23:40ID:???0795NAME IS NULL
2009/08/28(金) 19:43:47ID:???0796NAME IS NULL
2009/08/28(金) 20:10:06ID:???クラウド派の人ならphpPgAdminって人もいるだろうけど
0797NAME IS NULL
2009/08/29(土) 05:05:49ID:???0798NAME IS NULL
2009/08/29(土) 09:29:36ID:???スクリプトを流し込みたいなら、やっぱりpsqlになるだろうし。
0799NAME IS NULL
2009/08/29(土) 09:45:00ID:???0800NAME IS NULL
2009/09/01(火) 18:25:09ID:C/SXka7JPostgreSQLで使用できる、レプリケーションソフトで信頼性が高くて使いやすいのってありますか?
0801NAME IS NULL
2009/09/01(火) 18:51:11ID:???使ったことないけど。
0802NAME IS NULL
2009/09/01(火) 19:12:35ID:???全然使いやすくないけど
0803NAME IS NULL
2009/09/01(火) 19:31:57ID:???信頼性を重視しないといけないシステムなのでSlony-Iを使ってみます。
まずはググって調べてみなきゃ・・・早速のレスありがとうございました。
0804NAME IS NULL
2009/09/01(火) 19:43:04ID:???スケールアウトとは無縁だが。
0805NAME IS NULL
2009/09/02(水) 00:56:40ID:???テーブル構造が複雑になれば複雑になるほど
0806NAME IS NULL
2009/09/02(水) 09:17:18ID:???0807NAME IS NULL
2009/09/02(水) 09:32:28ID:???非同期だからメリットは多いけど
0808NAME IS NULL
2009/09/04(金) 20:48:10ID:PnKfXmZQタイトル(text)とインサートされた時間(timestamp)のカラムがありますが
それぞれでカラム名が統一されていません。
ex:TableAはタイトルのカラム名がtitleA、TableBがtitleB
この2つのテーブルからインサートされた時間が早い順に5件取得、とか可能でしょうか?
とりあえずviewをつくってみようかと思って
SELECT id from TableA,TableB order by 登録時間A DESC、登録時間B DESC LIMIT 5;
こんな感じでやってみましたがsyntax errorが止まりません…。
CentOS
PostgreSQL 7.4.13
0809NAME IS NULL
2009/09/04(金) 21:20:53ID:???0810NAME IS NULL
2009/09/04(金) 21:37:33ID:???SELECT * FROM TableA UNION ALL TableB ORDER BY time LIMIT 5
とやりたいところだが、UNION ALL - ORDER BY - LIMIT はオプティマイザが弱いので
(TableA LIMIT 5) UNION ALL (TableB LIMIT 5) LIMIT 5
みたいにしないと遅いハズ。
0811NAME IS NULL
2009/09/04(金) 21:51:50ID:PnKfXmZQ即レスありがとうございます
>>810
試してみたけどやはりsyntax error;;
IDとタイムスタンプをそれぞれのTableから取ってきて、
タイムスタンプをUnixTimestmapに変換してPHPで並べ替える、とかかなぁ
0812NAME IS NULL
2009/09/05(土) 00:08:15ID:???SELECT ID,タイトル,時間 FROM TABLE1
UNION ALL
SELECT ID,タイトル,時間 FROM TABLE2
) AS T1
ORDER BY 時間 ASC
LIMIT 5
携帯からだから実際試してないけど。
テーブル1とテーブル2の構造がちがうんじゃね?
そういう場合はUNIONするテーブル同士のカラムを揃えてやらんとだめ。
あとエラーメッセージはちゃんと読んで理解しろ。
じゃないと一生原因追求できんぞ。
>>810はかなり知ったか入ってるから参考にすんな。
>>810みたいになりたくなければエラーメッセージは読むことだ。
0813NAME IS NULL
2009/09/05(土) 00:37:37ID:???>>812
SELECT
*
FROM
(SELECT ID,タイトル,時間 FROM TABLE1 ORDER BY 時間 ASC LIMIT 5
UNION ALL
SELECT ID,タイトル,時間 FROM TABLE2 ORDER BY 時間 ASC LIMIT 5
) AS T1
ORDER BY 時間 ASC
LIMIT 5
つまりはこういうことね。
件数が多い場合は、テーブル全件UNIONするより、それぞれ5件に絞ってからUNIONした方が性能が出るということ。
>>808
エラーメッセージをきちんと読むことも重要。
マニュアル読めば、構文はきちんと書いてある。
0814NAME IS NULL
2009/09/05(土) 01:02:08ID:???0815NAME IS NULL
2009/09/05(土) 03:49:41ID:???どの辺が知ったかなんですか?
教えてもらえるとありがたいです。
0816NAME IS NULL
2009/09/05(土) 04:40:58ID:???だいたいニワカなのは違いない
0817NAME IS NULL
2009/09/05(土) 05:08:21ID:???バージョン確認せずに云々は同意。
データ件数がある程度多い(またはその逆)場合にのみ有効なチューニングが
あるかどうか分からないので、データ件数を確認することがどれほど有意義なのかが分からない
今回の場合だと、なによりもシンタックスエラーの詳細を知りたかったけどね。
0818NAME IS NULL
2009/09/05(土) 05:54:04ID:???むしろ詳しすぎて説明を端折っているから、それこそ「ニワカ」では説明を理解しきれなかったように見えるが。
0819NAME IS NULL
2009/09/05(土) 09:24:36ID:???言われた当事者以外が弁解するわけないんだし、なにやったって自演にしか見えんのだからやめとけ。
ってか、数万件程度じゃ遅くないと思うぞ別に。
0820NAME IS NULL
2009/09/05(土) 16:06:30ID:???何が言いたいんだろうか。
0821NAME IS NULL
2009/09/05(土) 16:33:52ID:???0822NAME IS NULL
2009/09/05(土) 17:25:36ID:???0823NAME IS NULL
2009/09/05(土) 19:34:20ID:???0824NAME IS NULL
2009/09/05(土) 19:35:46ID:???0825NAME IS NULL
2009/09/05(土) 22:42:21ID:???うん。>>816のいう「ニワカ」のおかげで解決できたねw
0826NAME IS NULL
2009/09/06(日) 02:42:44ID:???0827NAME IS NULL
2009/09/06(日) 03:59:33ID:???0828NAME IS NULL
2009/09/06(日) 05:34:05ID:???0829NAME IS NULL
2009/09/06(日) 10:09:34ID:???0830NAME IS NULL
2009/09/06(日) 10:32:15ID:???それすごいわかる
とんでもない理屈つけて反論するやつとか
0831NAME IS NULL
2009/09/06(日) 13:48:54ID:???間違いではないが、自分の回答が最良と思いこんでしまう>>812のようなタイプも多いよw
0832NAME IS NULL
2009/09/06(日) 15:22:15ID:sqLNCpnTカラム名を別名つけてあわせないとエラーは取れない
0833NAME IS NULL
2009/09/06(日) 15:43:57ID:XJT8VUB5IDがsqLおめw
0834NAME IS NULL
2009/09/06(日) 16:37:03ID:???IDにSQLが出るまでがんばるスレ
http://pc11.2ch.net/test/read.cgi/db/1242753301/
0835ココ電球 _/::o^ν ◆tIS/.aX84.
2009/09/06(日) 20:29:30ID:quiJ7AY/0836NAME IS NULL
2009/09/06(日) 20:58:05ID:???かなり恥ずかしいな。
こんな先輩だったら絶対新人育たないわ。
0837NAME IS NULL
2009/09/08(火) 21:38:12ID:???がない
0838NAME IS NULL
2009/09/08(火) 21:55:22ID:???サイトの中の人がリンクを張り替えるのを忘れてるんでしょ。
0839NAME IS NULL
2009/09/09(水) 20:08:57ID:khRK1LjC0840NAME IS NULL
2009/09/11(金) 18:36:53ID:fYa9VkEC登録時は'a1'とかでして
内部では最適化して単純なデータで管理してくれるData Typeって何ですか?
0841NAME IS NULL
2009/09/11(金) 18:39:09ID:???0842NAME IS NULL
2009/09/11(金) 18:40:52ID:???有り難う御座いました
0843NAME IS NULL
2009/09/11(金) 20:12:36ID:???0844841
2009/09/11(金) 21:54:57ID:???適当な事を言ってすまんかった
0845NAME IS NULL
2009/09/13(日) 16:23:04ID:???ありがとうございました^^
0846NAME IS NULL
2009/09/15(火) 07:45:44ID:???B-0000〜9999
のようにプレフィクスを付けた4桁のシーケンスを生成する
ことってできますか? A-0010とB-0010は別物にしたいです。
0847NAME IS NULL
2009/09/15(火) 08:30:50ID:???0848NAME IS NULL
2009/09/15(火) 13:05:17ID:???これだとA-0010とB-0010は別物にならなくないですか?
というか、seqには '10' しか入らないですよね。
0849NAME IS NULL
2009/09/15(火) 14:26:50ID:???別物ってどういう意味?
A-〜とB-〜を独立したシーケンスにするってこと?
なら二つ使えばよろし
0850NAME IS NULL
2009/09/15(火) 19:57:18ID:???ゼロパディングされないと怒っているように見えるけど、なんで?
0851NAME IS NULL
2009/09/15(火) 21:12:53ID:???0852NAME IS NULL
2009/09/16(水) 14:00:00ID:???os XP SP3
AccessからADO接続でレコードセット追加しようとしているんだけど、Openができません。
cn.ExecuteでCREATE TABLEはできているので、接続自体は確立しているようです。
接続はOELプロバイダーでしています。
テーブル名に日本語がまずいのかと思って、アルファベットにしてみましたが駄目でした。
rs.Open "T日本語名", cn, adOpenKeyset, adLockOptimistic
ERROR; syntax error at or near "文字化け"
LINE 1: 文字化け
文字化けしているところはテーブル名のようです。
0853852
2009/09/16(水) 14:14:30ID:???対処法等をご存知でしたら、ご教示のほどよろしくお願いします。
0854NAME IS NULL
2009/09/16(水) 16:39:47ID:???ここで取り扱うのが適切かは別として
> テーブル名に日本語がまずいのかと思って、アルファベットにしてみましたが駄目でした。
なら、アルファベットの時のエラーを出すべきだと思う。
アルファベットでもエラーメッセージが化けてるわけないよね?
0855NAME IS NULL
2009/09/16(水) 17:18:21ID:???投げられるならSELECT COUNT(*)とか適当に実行してみなよ
0856NAME IS NULL
2009/09/16(水) 18:03:31ID:???申し訳ありませんでした。アルファベットのときは文字化けしませんでしたが
エラーは同じものでした。
>>855
cn.Execute "DELETE FROM 日本語テーブル名;"で
レコードは削除されました。
Accessスレのほうがよろしいでしょうか?
0857NAME IS NULL
2009/09/16(水) 18:41:31ID:???Accessで似たような事やって悩んでた人はテーブル名を [ ] で括ってた。
まぁ、その人はクエリを書いててはまってたんで同じ話かわかりませんが。
自分では検証してないけど、その人が調べたところ Oracleで言う "テーブル名" な記述に相当するのが [テーブル名] とか言ってたな。
ハズレだったらゴメン。
0858852
2009/09/16(水) 19:15:50ID:???回答、ありがとうございます。教えていただいた方法を試してみましたが駄目なようです。
自分なりに試した結果、SQLを発行すれば開くことができるようです。
一歩進んだのですが、AddNewでこけました。ネット上でもうまくいっていないようです。
ODBCによるやり方はたくさん見つかるのですが。といっても、私は接続ができなかったです。
まぁ、SQLで何とかなりそうなので、まずはそちらで勉強を進めてみます。
みなさま、ありがとうございました。
0859NAME IS NULL
2009/09/16(水) 19:30:35ID:???> googleでエラーコード、postgresql ado などで調べました。
おつかれさま。
けどシンタックスエラーだと言われているのだからシンタックスをただしてみたらどうなの?
まずはアルファベットで。
0860NAME IS NULL
2009/09/16(水) 19:59:21ID:???rs.Open "SELECT * FROM T日本語名;", cn, adOpenKeyset, adLockOptimistic
でエラーは一応消えました。AccessのテーブルをどうやってPostgresのテーブルにINSERTさせるか調べていたところ、
ほかの方もSELECT * FROMで接続しているようです。
リンクテーブルにすれば早いのだろうけど。
どうしても解決できないときは、またよろしくお願いします。
0861NAME IS NULL
2009/09/16(水) 20:21:53ID:???0862NAME IS NULL
2009/09/16(水) 21:34:31ID:???皮肉を言われてるのに前向きだね
0863NAME IS NULL
2009/09/17(木) 00:12:46ID:???0864NAME IS NULL
2009/09/17(木) 06:52:37ID:???MS系のことはよく知らないんだけど→このエラーに言語は関係ないってのカス
シンタックスをただしてみたらどうなの→SQLエラーなんだからSQL見直せカス
0865NAME IS NULL
2009/09/18(金) 18:15:56ID:???その場合、データ型は date, text, int のどれが速いとかありますか?
text/int なら 20090918 と登録して検索する、ということです。
0866NAME IS NULL
2009/09/19(土) 00:58:57ID:???素直にdateで良いと思う。データサイズはintと同じ4byteだし、日付関数も使える。
intのほうが日付のパースをスキップできる関係で、入出力は若干速いとは思うけど、
そこにこだわるくらいなら、チューニングすべきものは他にあると思う。
んで、たぶんtextは一番効率が悪い。
0867NAME IS NULL
2009/09/19(土) 08:23:46ID:???なるほど!すごく勉強になりました。
そうか、サイズもあるのですね。
ありがとうございました。
0868NAME IS NULL
2009/09/19(土) 17:17:45ID:???文字列型で最高速はtext
そのうえでinteger>textなのは確かなんだが
dateはどうなんだろうね
0869NAME IS NULL
2009/09/20(日) 12:16:29ID:???整数と同じと考えていい。文字列から/への変換は整数よりは複雑だろうから、そこは遅いのでは。
0870NAME IS NULL
2009/09/20(日) 12:21:23ID:???0871NAME IS NULL
2009/09/23(水) 20:57:09ID:iXDfBimrPACKEGEからPOSGREインストールしたのですが
文字コードをUTF-8からEUC_JPに変えれません。
いろいろネットで調べて実行してますが反映されないで困ってます。
何か言い情報ありませんか。
0872NAME IS NULL
2009/09/23(水) 21:13:29ID:???こういうことじゃなくて?作成済みのDBの文字コード変更がしたいの?
てかなんでそんなに誤字多いんだw
0873NAME IS NULL
2009/09/24(木) 10:44:01ID:???と思ったが、Ubuntu だとコマンド名が違うんだっけ。pg_wrapper createdb と pg_createcluster だっけか。
0874NAME IS NULL
2009/09/25(金) 03:04:03ID:7fninZcEcreate table t (c int);
insert into t values (1);
insert into t select * from t;
...(3,4回くらい繰り返す)
insert into t.* from t,t t2;
これだとテーブルの中身が全部1になるのですが、全部違う値にする方法はないでしょうか?
ランダムでも、1,2,3,4というようなシーケンシャルでもいいです。
どうかよろしくお願いします。
0875NAME IS NULL
2009/09/25(金) 03:53:57ID:???お好みで SELECT i ところで random() とかも使える。
0876NAME IS NULL
2009/09/25(金) 09:59:53ID:???全部1で作ったら後は UPDATE で random な値で更新かけてしまうってのはどうでしょう。
update target set targetcolum=random()*100
これなら 0〜99 の範囲でランダムに全行の 項目 target.targetcolum を更新してくれます。
0877NAME IS NULL
2009/09/26(土) 13:02:56ID:???Application Data配下のpostgresqに配置しようとしたのですがpostgresqlフォルダが存在しませんでした。
ポスグレのバージョンにより作成場所が変わったりするのでしょうか?
ちなみにver 8.2.xです。
0878NAME IS NULL
2009/09/26(土) 13:26:36ID:???PC再起動後すぐにタスクマネージャーでプロセスをみたら postgres.exe が6個起動してるんですけど正常でしょうか。
何度か再インストールしてるのでそれが原因かもとおもってるのですが。
もし、異常な状態だとしたらどこをいじればなおりますでしょうか。
0879877
2009/09/26(土) 13:27:31ID:???ちなみにpostgreSQL 8.4 windows上で使用してます。
0880NAME IS NULL
2009/09/27(日) 00:10:38ID:???postgres.exe が10個起動しています。
0881NAME IS NULL
2009/09/27(日) 00:14:44ID:???たぶん、以下のような感じかな。
(例)
C:\Documents and Settings\■ログインユーザ名■\Application Data\postgresql\pgpass.conf
0882NAME IS NULL
2009/09/27(日) 11:24:33ID:???postgresqlのフォルダは自分で作成するんじゃなく普通はインストール時に
作成されるのですよね?
0883NAME IS NULL
2009/09/27(日) 12:23:28ID:???UNIX系の場合はそうだよ
0884NAME IS NULL
2009/09/27(日) 20:34:02ID:???マルチプロセスで動作するので、exeはたくさん立ち上がる。
0885NAME IS NULL
2009/09/27(日) 21:30:33ID:???君の意見は貴重だが Windows と Unix では意味を成さない。
「ウチのカレーにはチーズを入れる」程度の話だ。
0886NAME IS NULL
2009/09/27(日) 23:29:45ID:???>>881の示すディレクトリも所謂homeディレクトリ下だし。
0887NAME IS NULL
2009/09/27(日) 23:50:52ID:???いろいろご意見ありがとうございます。
とりあえず火曜日にpostgresqlディレクトリ作って試してみます。
0888NAME IS NULL
2009/09/28(月) 02:17:58ID:???0889NAME IS NULL
2009/09/28(月) 03:20:48ID:???Application Dataじゃなくてホーム直下じゃね?
って事だろ
0890NAME IS NULL
2009/10/03(土) 20:28:52ID:???> すいません、質問します。
>
> PC再起動後すぐにタスクマネージャーでプロセスをみたら postgres.exe が6個起動してるんですけど正常でしょうか。
postmasterじゃないですか?
0891NAME IS NULL
2009/10/03(土) 20:45:24ID:???最近のバージョンだと postmaster はいないよ。ぜんぶ postgres.exe。
もちろん、その中のひとつは "postmaster" の仕事をしてるけど。
0892NAME IS NULL
2009/10/03(土) 22:38:44ID:???0893NAME IS NULL
2009/10/04(日) 16:51:49ID:???CLUSTER コマンドは、内部的には ORDER BY しつつテーブルのコピーを
作成して入れ替えるようなもののようですが、
そうすると CLUSTER を実行した直後のテーブルに VACUUM FULL や REINDEX は
不要というかむしろ時間の無駄なのでしょうか?
0894NAME IS NULL
2009/10/04(日) 18:16:23ID:???そのとおり、時間の無駄。CLUSTER 中にはテーブルもインデックスも
両方とも作り直されるので、終わった後に追加で必要なのは ANALYZE だけ。
VACUUM FULL は逆で、テーブルのレコードだけを寄せ集めるだけなので
インデックスはむしろ汚れる。こっちは追加で REINDEX (+ANALYZE) が要る。
0895NAME IS NULL
2009/10/04(日) 22:42:57ID:???ありがとうございます。
しかし、全部のテーブルをクラスタ化するわけではないので
たまには全体に VACUUM FULL + REINDEX しないといけないですよね
ううむ、どのようにスケジュールを組むか悩ましい。。。
0896NAME IS NULL
2009/10/06(火) 18:40:50ID:VxXgwHkhできればWindowsで。
外部キーとか、リレーションまで書いてくれるのがいい。
印刷したい。
DBDesignerForkでODBC経由してやってみたけど、
外部キースルーされたので。
0897NAME IS NULL
2009/10/06(火) 19:10:40ID:???A5:SQLは?
0898NAME IS NULL
2009/10/06(火) 20:27:23ID:VxXgwHkhなんか質問されてるのかと思ったけど、それがソフト名なんすね。
よさげなんで使ってみます。情報感謝。
0899896
2009/10/06(火) 20:42:25ID:VxXgwHkhもしかして使い方が悪い?
0900NAME IS NULL
2009/10/06(火) 21:05:13ID:???>なんか質問されてるのかと思った
www
ようするに、テーブル間に線引ければいいんだよね?
今試してみたけどできましたよ。
ひょっとしてバージョンの問題かも。
自分がためしたのは
PostgreSQL8.4(Windows)
A5:SQL 2.3.3
です。
A5の掲示板で質問すると作者さんが丁寧に答えてくれますよ。
0901900
2009/10/06(火) 21:07:29ID:???>ようするに、テーブル間に線引ければいいんだよね?
ようするに、リバース時に自動的にテーブル間に線引ければいいんだよね?
です。
失礼。
0902NAME IS NULL
2009/10/06(火) 21:13:19ID:???外部キー設定しててもだめってこと?
0903NAME IS NULL
2009/10/07(水) 01:22:21ID:???せめて3万なら買うのに
0904NAME IS NULL
2009/10/07(水) 09:53:50ID:AX7F8ONs>900-901
できましたか。んーもうちょい見てみます。
>902
そうです。定義だけでデータ空なのが駄目なのか、外部キーの設定が
悪いのかかな・・・サーバに直接つなげないので、定義だけ抜き出して
ローカルで再構築したのでなんか悪いのかもしれないす。
0905NAME IS NULL
2009/10/07(水) 13:55:11ID:vK4mhVfs今DLして、SQL鯖とつないでみたけど、CSEの代わりにいいかもと思った>thks
#他のDBは家でためしてみよう・・・・
0906NAME IS NULL
2009/10/07(水) 21:52:29ID:???0907NAME IS NULL
2009/10/08(木) 01:09:56ID:???A5では何がダメなの
0908NAME IS NULL
2009/10/08(木) 02:32:26ID:???0909NAME IS NULL
2009/10/08(木) 02:38:30ID:???0910NAME IS NULL
2009/10/08(木) 22:45:10ID:???0911NAME IS NULL
2009/10/09(金) 02:02:19ID:???0912NAME IS NULL
2009/10/09(金) 04:46:17ID:???0913NAME IS NULL
2009/10/09(金) 05:08:29ID:???http://www.dbwrench.com/
0914NAME IS NULL
2009/10/09(金) 09:05:14ID:???テーブルは綺麗に出てきたけど外部キーの線が完全に出てこなかった
というか半分くらいしか再現されなかったわ
0915NAME IS NULL
2009/10/11(日) 00:08:39ID:???A5:SQLってデータ型正しく出てるくるよ
0916NAME IS NULL
2009/10/11(日) 01:04:39ID:???0917NAME IS NULL
2009/10/13(火) 12:48:31ID:???0918NAME IS NULL
2009/10/13(火) 13:24:13ID:???0919NAME IS NULL
2009/10/13(火) 22:44:19ID:???パーティショニングではなく、ただの継承の話です。
CREATE TABLE parent ( 〜 );
CREATE TABLE child ( 〜 ) INHERITS (parent);
の構成で、
INSERT INTO child SELECT * FROM 〜;
などで子テーブルに長時間 INSERT している間、親テーブル に対する INSERT が
ずっと waiting で固まってしまいます。
親テーブルへの INSERT が子テーブルに対してもロックを獲得しにいっているのではないか
と予想しています。
トリガやルールで parent への insert を child に振り分ける、なんてことはしてないので
子テーブルにまでロックが及ぶのは非常に迷惑なのですが、
これってどうしようもないのでしょうか。
0920NAME IS NULL
2009/10/13(火) 23:00:14ID:???0921NAME IS NULL
2009/10/13(火) 23:13:31ID:???何か勘違いをしているか、INSERT以外のことをやっていないか?
外部キーやユニークキーはどうなってる?
0922NAME IS NULL
2009/10/14(水) 10:59:06ID:???0923NAME IS NULL
2009/10/14(水) 10:59:57ID:???0924NAME IS NULL
2009/10/15(木) 08:35:35ID:3rUfd4HhPostgreSQLってタダで手に入って
このDBを含んだソフトを売ってもいいのですか?
ライセンス?っていうのでしょうか?
0925NAME IS NULL
2009/10/15(木) 10:35:28ID:???BSDライセンスのスタイルの使用許諾に外れない限り、
無料利用可能で、開発したソフトの販売も可能。
以下の著作権表示をしておけば、ほぼ大丈夫でしょう。
--------------------------------------------------------
部分的著作権 (c) 1996-2009, PostgreSQL国際開発グループ
部分的著作権 (c) 1994-1996 カリフォルニア大学本校
--------------------------------------------------------
価格(Price)
PostgreSQLの利用は、商用でもオープンソースでもすべて無料です。
上記に示してあるBSDスタイルの使用許諾に外れない限り、
PostgreSQLのコードを制限無く商品に取り込むことができます。
http://wiki.postgresql.org/wiki/FAQ/ja#.E4.BE.A1.E6.A0.BC.28Price.29
著作権(BSDライセンス)について(和訳は参考。英語原文も確認すること)
http://wiki.postgresql.org/wiki/FAQ/ja#1.3.29_PostgreSQL_.E3.81.AE.E8.91.97.E4.BD.9C.E6.A8.A9.E3.81.AF.E3.81.A9.E3.81.86.E3.81.AA.E3.81.A3.E3.81.A6.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F
POSTGRESQL データベース管理システム
部分的著作権 (c) 1996-2009, PostgreSQL国際開発グループ
部分的著作権 (c) 1994-1996 カリフォルニア大学本校
本ソフトウェアおよびその文書一式は上記の著作権表示と、この文章
およびこれに続く二つの段落が全ての複製に添付されている限りにおい
て、使用、複製、修正および配付の許可を、いかなる目的であっても、
無償でかつ同意書無しに行なえることをここに認めます。
カリフォルニア大学は、いかなる当事者にたいしても、利益の壊失を
含む、直接的、間接的、特別、偶然あるいは必然的にかかわらず生じた
損害について、たとえカリフォルニア大学がこれらの損害について訴追
を受けていたとしても、一切の責任を負いません。
カリフォルニア大学は、商用目的における暗黙の保証と、特定目的で
の適合性に関してはもとより、これらに限らず、いかなる保証も放棄す
ることを明言します。以下に用意されたソフトウェアは「そのまま」を
基本原理とし、カリフォルニア大学はそれを維持、支援、更新、改良あ
るいは修正する義務を負いません。
0926NAME IS NULL
2009/10/15(木) 11:30:18ID:3rUfd4Hh情報ありがとうございます
安心して組み込めます
0927NAME IS NULL
2009/10/18(日) 16:01:57ID:???0928NAME IS NULL
2009/10/18(日) 22:55:18ID:???後はマニュアルがなんつっても一番でしょ。
0929NAME IS NULL
2009/10/19(月) 00:09:52ID:SE04vEP7それとも、MySQL?(バックがオラクルだからなおさらって意味で・・・)
どうなんだろう。
0930NAME IS NULL
2009/10/19(月) 00:18:04ID:???オラクルとかの高いDBって売れなくなるってことはないの?
0931NAME IS NULL
2009/10/19(月) 00:27:05ID:???でもPostgreSQLも少しずつ伸ばしていくんじゃないかな。
オラクルのシェアは落ちていくだろうけど、
まだそれなりに売れるとは思うよ。
営業も無料のものを勧めるより、有料のものを売って売上、利益を取れるほうがいいからね。
0932NAME IS NULL
2009/10/19(月) 11:36:39ID:k3GhPa+nOracle/SQL鯖とプロダクトレベルのDBリンク張れるか とか
そこそこの規模だとそのあたりが解決されないと というのがある気がする
システム1式として構築する場合、運用面で色々あるから
マニュアル・関連書籍も弱いかな?
大規模な案件だと、総額に占めるOracleの価格は、たいしたことはないから
#たぶんね
0933NAME IS NULL
2009/10/19(月) 17:19:55ID:G7uEdkp8他に気になるのは人材かな。オラクルはこんな問題だれが直せるんだよって時でも
金さえ積めば解決できる人間を用意してくれるけど
PostgreSQLで同様の問題にぶちあたった場合、同じように
金を積んでも解決出来る人材って見つかるのかなって疑問がある。
SRAかNTTのOSSの人しかパッと思いつかないけど
宣伝してないだけで、もっといろんな会社が扱ってるのかな。
0934NAME IS NULL
2009/10/19(月) 17:21:28ID:???0935NAME IS NULL
2009/10/19(月) 17:27:10ID:???0936NAME IS NULL
2009/10/19(月) 17:42:36ID:???解決してくれるサービスあったよね。
0937NAME IS NULL
2009/10/19(月) 20:11:31ID:???Oracleに換装するけどな
0938NAME IS NULL
2009/10/19(月) 20:46:07ID:???PostgreSQLユーザってやけにサポートをほしがる気がする。客層の差?
0939NAME IS NULL
2009/10/19(月) 21:19:59ID:???0940NAME IS NULL
2009/10/19(月) 23:14:13ID:???postgresなんか使うわけないじゃん。
0941NAME IS NULL
2009/10/20(火) 00:14:10ID:???0942NAME IS NULL
2009/10/20(火) 07:14:11ID:???相当需要あるんだと思う
0943NAME IS NULL
2009/10/20(火) 08:01:11ID:???商用を買ってサポートサービス受けるより
安上がりだしね。
0944NAME IS NULL
2009/10/20(火) 13:57:39ID:pYoEoiicgoldレベルの人がそういるとは思えないんだよね
ちゃんとしたっていうと Linux Expoert クラスになるんだろうな・・・
#詳しい人たちが、使ってるってレベルなんだろうなと(そこそこの規模の案件で)
それはMySQLも同じだと思うんだけどね
小規模で、関係者で詳しい人がいなくて、ごめんなさいで済むなら
サポートはいらんわな
#逆に言うと、そのレベルでの採用が多いんだろうかなと
#雑誌で紹介される案件等はもちろん違うんだろうけどね
そういうレベルの話をしているつもりは無いし
0945NAME IS NULL
2009/10/20(火) 21:27:18ID:???OracleみたいにSilverとGoldがあるのか。
誰か持ってる人いる?
0946NAME IS NULL
2009/10/20(火) 21:41:36ID:???0947NAME IS NULL
2009/10/20(火) 22:37:49ID:???Goldもってるよ。
自分以外に持ってる人見かけたことないが。
0948NAME IS NULL
2009/10/21(水) 06:48:29ID:???ただ、マニュアル丸暗記で取れるから大したことはないって聞いてるけど。
0949NAME IS NULL
2009/10/21(水) 07:36:20ID:???0950NAME IS NULL
2009/10/21(水) 19:14:22ID:???とりあえず勉強しないで行ってみるけど
8年くらい使ってるから落ちたら恥ずかしい
0951NAME IS NULL
2009/10/21(水) 23:38:24ID:???0952NAME IS NULL
2009/10/22(木) 00:01:39ID:???0953NAME IS NULL
2009/10/22(木) 10:06:47ID:???0954NAME IS NULL
2009/10/22(木) 11:16:05ID:???以下みたけど、うまくできなかった。
d.hatena.ne.jp/uriyuri/20090128/1233117758
table add key ( node id = 1, fully qualified name = 'public.history' );
でエラーになる。
0955NAME IS NULL
2009/10/22(木) 12:06:37ID:???0956NAME IS NULL
2009/10/22(木) 13:00:33ID:???どうも。
table add key ( node id = 1, fully qualified name = 'public.history' );
の箇所で、
9: ERROR: syntax error at or near table
となります。
参考:setup_cluster.txt
http://d.hatena.ne.jp/uriyuri/20090128/1233117758
0957NAME IS NULL
2009/10/22(木) 13:07:06ID:???0958NAME IS NULL
2009/10/22(木) 13:38:16ID:???8.4.xと2.0.3RC2の組み合わせで動かないのは俺が検証済み
Linuxでだけど
0959NAME IS NULL
2009/10/22(木) 14:04:18ID:5FtxiwBdOracleのつもりで書いてたので、Postgresの方はレベルは不明なんだ>すまん
Linuxでも「ホントは役に立つOracleコマンド管理術」位は押さえてるとかさ
#Oracleは趣味だから、ちゃんと見てないけどw
0960NAME IS NULL
2009/10/22(木) 14:51:05ID:???>>958
ありがとうございます。
PosgreSQL 8.4.0 Win
Slony-I は、スタックビルダからインストール、
slon.exe の日付が 2009/08/07 7:09 で、ファイルバージョン2.0.2.9218
#この処理でこのレプケーションシステム特有のスキーマ_$CLUSTERNAME(_slony_test1)を作成
という意味が理解できていません。
参考:setup_cluster.txt
http://d.hatena.ne.jp/uriyuri/20090128/1233117758
0961NAME IS NULL
2009/10/22(木) 15:45:13ID:???両方成功したらコミットという2相コミットをやりたいんですけど、
具体的にどう書いたらいいかわかりません。
pg_query(A, "BEGIN");
pg_query(B, "BEGIN");
pg_query(A, "UPDATE テーブル名");
pg_query(B, "UPDATEテーブル名");
ちょっとphpも入ってますが教えていただけないでしょうか。
0962NAME IS NULL
2009/10/22(木) 15:54:20ID:???1つのトランザクション、コミットができるなら、
あとは条件文次第で、2相だろうが、3相だろうが、可能でしょ。
0963NAME IS NULL
2009/10/22(木) 16:05:25ID:???各トランザクションをプログラムで管理して
それぞれコミットやらロールバックしていけということ?
0965NAME IS NULL
2009/10/22(木) 16:20:55ID:???結果条件によって、
それぞれ、データベースAとデータベースBの
コミット、ロールバックするということじゃないの。
0966961
2009/10/22(木) 16:32:36ID:???まあそれでもうまくいくみたい?なんですけど、
複雑になってくるとあれなんで
2相コミット機能でのやり方を知りたいのです。
0967NAME IS NULL
2009/10/22(木) 16:40:56ID:???以下を参考にしてみたら。
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050616/162881/
0968961
2009/10/22(木) 21:12:00ID:???ここは既に見ました。
でも、いまいちちゃんと書いてないから
実際の書き方がよくわからないんだよね。
なんでこんなに情報少ないんだろ
0969NAME IS NULL
2009/10/22(木) 21:31:51ID:???ほかに情報が必要か?
0970NAME IS NULL
2009/10/22(木) 22:38:30ID:???Linuxの話だけど8.4系は1.2系の最新RCじゃないと動かない
まず本体を8.3系にして試してみ
それで通るならスタックビルダでバンドルされる版が8.4に対応してないものだと思う
0971NAME IS NULL
2009/10/22(木) 22:50:27ID:???2phaseコミットの説明なら、Javaの情報を当たった方がいいんでは?
XAとかのキーワードでどうぞ。
どの実装であれ、トランザクションを用意して
各データソース/セッションごとの操作は、全体で協調取れるまでは
ローカルのコミットという状態で、全てをコミットできる準備が出来たら
全体に対しコミットの号令を掛けてグローバルなコミットとする
という感じの流れでは?
実際には、>>969 だけじゃないの?
0972NAME IS NULL
2009/10/22(木) 22:56:52ID:???2つのDBの整合性が取れてるかどうか判断する前にローカルをコミット扱いにするのは不味くない?
0973NAME IS NULL
2009/10/22(木) 23:08:28ID:???XAだとPostgresとはコマンドの対応が違うから、むしろ混乱するかも。
2PCはフレームワークに任せられるなら任せたほうが楽。
Javaなら結構あるけど、PHPだと少ないのかな?
>>972
「ローカルのコミット」は「準備済み」の意味っぽい。自分も始めて聞く用語だが。
0974NAME IS NULL
2009/10/23(金) 00:15:41ID:???今度8.3で試してみます。
0976NAME IS NULL
2009/10/23(金) 10:46:18ID:???0977NAME IS NULL
2009/10/23(金) 11:55:37ID:???0978NAME IS NULL
2009/10/23(金) 11:56:34ID:???親がロールバックしてお前が消えるぞ
0980NAME IS NULL
2009/10/23(金) 12:10:25ID:???いりませんか〜♪
`∧_∧
(・∀・ ) 旦~@
0┬0)囗-| ̄ ̄ ̄|
◎┴し-◎  ̄◎ ̄ 〜
0981NAME IS NULL
2009/10/23(金) 12:14:32ID:???テーブルの更新に失敗したので
ロールケーキしました。
0982NAME IS NULL
2009/10/23(金) 12:31:13ID:???0983NAME IS NULL
2009/10/23(金) 16:22:22ID:???>>975
PREPARE TRANSACTION <gxid> が成功する前ならば、普通に ROLLBACK。
エラーが起こったときも、通常通りロールバックされる。
PREPARE TRANSACTION <gxid> が成功した後ならば、ROLLBACK PREPARED <gxid>。
COMMIT PREPARED が成功した後は取り消せないので、万が一 COMMIT PREPARED が
失敗したノードは切り離して縮退運転するしかない。まず、ありえないはずだが。
0984NAME IS NULL
2009/10/23(金) 19:30:46ID:???http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050616/162881/?ST=oss&P=2
をSQLコマンドでの確認はできた。
結局、個々のSQL結果を判断して、
commit,rollbackをするか、
COMMIT PREPARED,ROLLBACK PREPARED をするってことじゃないの?
個々で判断制御となると2相のメリットというか使い方がよくわからないけど。
SELECT * FROM pg_prepared_xacts;
の抽出結果を見て制御するってことなのかな?
0985NAME IS NULL
2009/10/23(金) 19:33:11ID:???>>961 さんは、どんな環境、どこまで、確認できてるの?
0986NAME IS NULL
2009/10/23(金) 20:16:12ID:???普通のトランザクションの
--db1--
begin;
〜(insert分など)
commit;(または rollback;)
--db2--
begin;
〜(insert分など)
commit;(または rollback;)
と
2相の
--db1--
begin;
〜(insert分など)
PREPARE TRANSACTION 'test1';
COMMIT PREPARED 'test1';(または ROLLBACK PREPARED 'test1';)
--db2--
begin;
〜(insert分など)
PREPARE TRANSACTION 'test2';
COMMIT PREPARED 'test2';(または ROLLBACK PREPARED 'test2';)
は、結果は変わらないように思えるけど。
片方(test1)のDB1のCOMMIT PREPAREDが成功したあと、
もう片方(test2)のDB2のCOMMIT PREPAREDなどが失敗しても、
test1側は、もう元に戻せないみたいだし、
何が2相のメリットになるんだろう。
他のDBなどからでも
SELECT * FROM pg_prepared_xacts;
で2相実行中の抽出結果を見れるということくらい?
0987NAME IS NULL
2009/10/23(金) 20:38:38ID:???実際のcommitに先立ってcommitに成功するかどうか判断するのがprepare transaction。
これに成功すればcommit preparedは無条件で成功する。
つか、2相commitが必要な理由がわからないんだったらわざわざ使う必要はないと思うが。
0988NAME IS NULL
2009/10/23(金) 21:26:44ID:???PostgreSQL Part.7
http://pc11.2ch.net/test/read.cgi/db/1256300618/
0989NAME IS NULL
2009/10/24(土) 03:05:24ID:???>つか、2相commitが必要な理由がわからないんだったらわざわざ使う必要はないと思うが。
何がメリットになるんですか?
0990NAME IS NULL
2009/10/24(土) 04:13:22ID:Ft8Sh8L4以下の順番で実行すれば2相コミットの目的である
複数データベース間の一貫性保証ができます。
// db1操作
begin;
〜(insert分など)
PREPARE TRANSACTION 'test1';
if (失敗)
return 操作失敗 // db1、db2とも変更なし
// db2操作
begin;
〜(insert分など)
PREPARE TRANSACTION 'test2';
if (失敗)
ROLLBACK PREPARED 'test1'; // db1の操作取り消し
return 操作失敗 // db1、db2とも変更なし
// コミット
COMMIT PREPARED 'test1';
COMMIT PREPARED 'test2';
return 操作成功 // db1、db2とも変更あり
0991NAME IS NULL
2009/10/24(土) 13:24:53ID:???ありがとうございます。
以下とあまり変わらないとも言えるのかな。
--db1--
begin;
〜(insert分など)
if (失敗)
ROLLBACK; // db1の操作取り消し
return 操作失敗 // db1、db2とも変更なし
--db2--
begin;
〜(insert分など)
if (失敗)
ROLLBACK; // db2の操作取り消し
return 操作失敗 // db1、db2とも変更なし
commit;(db1)
commit;(db2)
0992NAME IS NULL
2009/10/24(土) 13:44:06ID:???0993NAME IS NULL
2009/10/24(土) 15:04:52ID:???の成功後、
COMMIT PREPARED 'test2'; --(db2に対して)
に失敗したら、db1は元に戻らないようだけど、
普通のCOMMITと2相のCOMMIT PREPAREDの差は、リスクの差?
0994NAME IS NULL
2009/10/24(土) 15:31:33ID:???2相のcommit prepared;は、保存されているから、再起動のあとでも、
commit prepared;を実行すれば、対応可能、トランザクションの結果が保証されるということか。
初期処理で、
SELECT * FROM pg_prepared_xacts; を見て、
commit prepared;を実行しておかないといけないってことね。
どうも、みなさん、勉強になりました。
私は、>>961 じゃないので、念のため。
0995NAME IS NULL
2009/10/24(土) 15:42:19ID:???//初期処理(何らかの原因で、2相トランザクションが残っている場合)
SELECT * FROM pg_prepared_xacts;
if (gid='test1') //db1のトランザクションが残っている場合
COMMIT PREPARED 'test1';
if (gid='test2') //db2のトランザクションが残っている場合
COMMIT PREPARED 'test2';
// db1操作
begin;
〜(insert分など)
PREPARE TRANSACTION 'test1';
if (失敗)
return 操作失敗 // db1、db2とも変更なし
// db2操作
begin;
〜(insert分など)
PREPARE TRANSACTION 'test2';
if (失敗)
ROLLBACK PREPARED 'test1'; // db1の操作取り消し
return 操作失敗 // db1、db2とも変更なし
// コミット
COMMIT PREPARED 'test1';
COMMIT PREPARED 'test2';
return 操作成功 // db1、db2とも変更あり
0996NAME IS NULL
2009/10/24(土) 16:27:41ID:???普通のコミットだと制約違反とかでCOMMIT時に失敗することは普通に起こる。
2PCならPREPARE TRANSACTIONが成功した時点でそこはクリアしてることが保証される。
0997NAME IS NULL
2009/10/24(土) 16:38:45ID:???普通のCOMMITがエラーになることがあるのは、わかりますよ。
2相のCOMMIT PREPAREDがエラーになることがあるのかどうか、知らないものでして。
それで、テスト的に途中でサーバーを再起動してみて、2相トランザクションがどうなるか確認してみたら、
SELECT * FROM pg_prepared_xacts;
に残っていることを確認できたので、2相のトランザクションのメリットを理論だけでなく実際の動作として確認できました。
SQLコマンドレベルですが。
0998NAME IS NULL
2009/10/24(土) 17:00:21ID:???ディスク故障とかを除けば、COMMIT PREPAREDがエラーになることは、まず無い。
0999NAME IS NULL
2009/10/24(土) 17:05:49ID:???障害の場合は回復時に再実行すればいい。
1000NAME IS NULL
2009/10/24(土) 17:15:56ID:???そうでなければ、1へロールバック
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。