レス数が900を超えています。1000を超えると表示できなくなるよ。
PostgreSQL Part.5
- 1 :NAME IS NULL:2007/12/01(土) 21:38:37 ID:LPSUO/OT
- PostgreSQL (ぽすとぐれすきゅーえる, ぽすとぐれす) について語るスレです。
前スレ [【Windows】 PostgreSQL8 Part.1 【対応】] http://pc11.2ch.net/test/read.cgi/db/1102247223/
● 関連サイト
[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/
● 関連スレ
[2ch検索] http://find.2ch.net/index.php?STR=PostgreSQL
[WebProg/PostgreSQL 2テーブル目] http://pc11.2ch.net/test/read.cgi/php/1047317680/
- 866 :NAME IS NULL:2008/08/10(日) 23:13:39 ID:???
- textとcharacter varying(varchar)のデータ型の使い分けの
基本的な考え方を教えて下さい。
webで探すとtext型を推奨するような書き込みもありますが、
お互いで得手不得手な事があるのでしょうか?
- 867 :NAME IS NULL:2008/08/10(日) 23:46:39 ID:???
- >>866
DB側で文字数の制限およびチェックが必要かどうかだけ。
と思ってる。
- 868 :NAME IS NULL:2008/08/11(月) 04:43:15 ID:???
- >>867
それでOK。実装はまったく一緒だし。
管理ツールで表示が違う場合はあるかも。
varcharは1行テキストボックス、textは複数行テキストボックスとか。
- 869 :NAME IS NULL:2008/08/11(月) 11:05:33 ID:JHhGIW9s
- Macのヒラギノで表現できる文字(Adobe-Japan1-5 JIS X 0213? + Unicode?)を全て格納したいのですが、
DBの文字コードは何を指定したらいいのでしょうか。
http://www.apple.com/jp/pro/design/typography/05/index6.html
を読んでいると、全てを文字コードで格納するのは不可能とも読み取れますが・・
UTF-8にしておくのが一番いいのでしょうか?
- 870 :866:2008/08/11(月) 13:45:48 ID:???
- >>867-868
なるほど、ありがとうございました。
- 871 :NAME IS NULL:2008/08/12(火) 07:29:17 ID:???
- ヒラギノのことはよく知らんけどUnicodeで表現できるならUTF-8でいいんじゃ?
表現できなきゃ、バイナリデータとして格納とか。
- 872 :NAME IS NULL:2008/08/16(土) 12:56:12 ID:iPeeVtKy
- 〉863
それ、おれもなった。
結局解決つかなかったからpgpool使ったよ。
- 873 :NAME IS NULL:2008/08/18(月) 04:35:12 ID:rrvhCdtj
- VACUUMのためにDB鯖を2台用意し
1台を通常運用、ある一定時刻がきたらデータをすべて
2台目のDB鯖に写しアプリからもデータ更新不可・2台目の鯖接続というように処理させ
1台目のVACUUM処理終了後、通常運用に戻るというような
運用はありでしょうか?
何かネックになりそうなことはありますでしょうか?
- 874 :NAME IS NULL:2008/08/18(月) 06:17:41 ID:???
- 2台目のサーバで行われた更新を
どうやって1台目に反映させるの?
- 875 :NAME IS NULL:2008/08/18(月) 06:48:38 ID:???
- ありがとうございます。
2台目の鯖運用時は参照のみに利用し、更新は行いません。
ということです。
- 876 :NAME IS NULL:2008/08/18(月) 08:11:16 ID:???
- >>875
特に問題はないと思う。2台目のデータは毎回捨てるってことだよね?
ただ、目的がVACUUM中の性能低下を回避するだけならば、
サーバ間のデータコピーが本当にVACUUMより軽いか調べたほうが良いかも。
- 877 :NAME IS NULL:2008/08/18(月) 08:50:25 ID:???
- pgpoolとかで同期させといて
バキュームしたい時、意図的に切断しとけば?
- 878 :NAME IS NULL:2008/08/18(月) 16:14:41 ID:???
- >>872
レスありがとうございます。そちらの環境でもなりましたか。
すぐ気付きそうな現象ですから、情報が出ていてもよさそうなもんですが、無いんですよね。
2008-03-09以降リリースのバージョンで、pglbのdropdb上手くいっている人いましたら、是非環境を伺いたく。
- 879 :NAME IS NULL:2008/08/19(火) 00:12:40 ID:qDOKASZt
- 複合PKを持っている表を
ID+UNIQUE制約に変更したいときに、
既存データにID値を振りなおす(採番する)のって
serial型をADD COLUMNするだけで行けます?
日本語わかりにくかったらごめんなさい。
- 880 :NAME IS NULL:2008/08/19(火) 08:51:25 ID:???
- >>879
カラム追加だけだと中身がNULLじゃね?
- 881 :NAME IS NULL:2008/08/19(火) 10:02:35 ID:???
- 連番振るだけなら一発でできるよ。
シリアル追加だけじゃ何も入らない。
- 882 :NAME IS NULL:2008/08/19(火) 10:21:33 ID:???
- >>879
実はその新規連番付与にも複雑な法則性が…
なんて後出しが来ないことを祈るwww
- 883 :881:2008/08/19(火) 10:34:12 ID:???
- あれ?
今試したら、しっかり番号入ってる。
すみません、ALTER TABLE table ADD COLUMN no SERIAL;
だけで入ってました。8.1.4ですが
- 884 :NAME IS NULL:2008/08/20(水) 01:18:01 ID:???
- クラサバの接続とApache+PHPでの接続、利用はわかるのですが、
WebサーバーのPostgreSQL へVB.NET または、VB6での接続は可能でしょうか?
可能であれば、その方法をご存知の方いましたら、教えて下さい。
WebサーバーへのODBC接続は試みましたがうまくいきませんでした。
- 885 :NAME IS NULL:2008/08/20(水) 07:57:05 ID:???
- >>884
ODBCでも良いし、Npgsqlでも良いし、お好きな方法で。
事象の報告もなしに「うまくいきません」といわれても、これ以上のアドバイスは無理。
- 886 :NAME IS NULL:2008/08/20(水) 08:39:19 ID:???
- >>884
「WebサーバーへのODBC接続」
文脈から理解できるが言葉の意味をしっかり押さえるべき
- 887 :NAME IS NULL:2008/08/20(水) 09:52:09 ID:???
- PostgreSQLのODBCドライバがインストールされて無いんじゃないの?
まず、開発用PC(Win?)からWebサーバ上のPostgreSQLにODBC接続可能かどうか試しましょう。
OKならVB6ならADODB、VB.NETならADO.NETで接続可能なはず。
ADO.NETではODBC接続は速度的に使いものにならないからNpgsqlが無難だね。
- 888 :NAME IS NULL:2008/08/21(木) 00:13:36 ID:???
- 884です。
みなさん、ご教授ありがとうございます。
できるようになりました。
ポートが空いていなかったのが原因でした。
できれば、必要なポートだけを開けたいのですが、
PostgreSQLで必要な5432など以外に何が必要なのでしょうか?
- 889 :879:2008/08/21(木) 02:16:48 ID:???
- こんなに早く回答もらえると思ってなかったので遅くなりました
ありがとうございます。
実際に試せるのはもうちょっと先になるんですが
ハードが物理的におかしくなってそれどころじゃなくなって
泣きそうです ><
- 890 :NAME IS NULL:2008/08/21(木) 17:41:24 ID:???
- >>888
標準では5432tcpだけあけとけば問題ないよ
> PostgreSQLで必要な5432など以外に何が必要なのでしょうか?
これはPostgreSQL以外で必要となるポートと言ってますか?
- 891 :NAME IS NULL:2008/08/22(金) 18:49:17 ID:???
- >>890
888ですが、
5432だけで、いいのですか。
ありがとうございます。
今のところ、それだけでは、うまくいきませんが、試行錯誤してみます。
- 892 :NAME IS NULL:2008/08/22(金) 19:00:47 ID:???
- それだけでうまくいかないのは、別の原因か設定ミス
- 893 :NAME IS NULL:2008/08/23(土) 23:17:25 ID:???
- PostgreSQLの問い合わせの方法の中にビットマップスキャンというのが
ありますが,そもそもビットマップとは何なのでしょうか?
windowsのビットマップ画像でないと思うのですが,それではいったい何を示しているのか
わかりません
わかる方いたらお願いします
- 894 :NAME IS NULL:2008/08/24(日) 07:41:58 ID:???
- ググれ
- 895 :NAME IS NULL:2008/08/25(月) 12:46:22 ID:???
- http://xn--lckja1b6r.jp/%E3%83%93%E3%83%83%E3%83%88%E3%83%9E%E3%83%83%E3%83%97%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3
- 896 :NAME IS NULL:2008/08/28(木) 19:53:10 ID:???
- debianにインストールしたのですが、ローカルでは問題なく動くのですが、
別マシンから接続すると、
psql: could not open certificate file "/home/orca/.postgresql/postgresql.crt": そのようなファイルやディレクトリはありません
となってしまいます。
このファイルは、どういうタイミングで作られるんでしょうか?
- 897 :NAME IS NULL:2008/08/28(木) 23:25:43 ID:???
- >>890
>>888でできるようになりました、と書いているが、>>890でうまいくいきませんと書いているわけで、
何ができて何ができていないのかが伝わってこないのが現状です。
よくわからんので、Webサーバの80tcpを開けてみたら?
>>896
SSL関連のように思うが、それは意図的にそういう接続を?
- 898 :NAME IS NULL:2008/08/29(金) 08:58:19 ID:???
- >>897
>SSL関連のように思う
とあるソフトのインストールを、手順書の(OSのインストール手順からある)通りにやっていたんですが、
SSLの設定の事は何処にも書いてないんで、Postgerの問題かと思ったのです。
SSLのセットアップから試してみます。
- 899 :NAME IS NULL:2008/08/29(金) 18:03:21 ID:???
- oracleにあるselct for update wait のような
行ロックを掛けつつタイムアウトを設定するには
どうすればいいでしょうか?
- 900 :NAME IS NULL:2008/08/30(土) 05:40:20 ID:???
- >>899
それ、タイムアウト設定じゃなくて
ロックされてたら待機するかエラー返すかのオプションだろwww
PostgreSQL8.1あたりからNO WAITが使えるようになった、
ってことは、これまでのはWAITだったってことだ。
- 901 :NAME IS NULL:2008/08/30(土) 09:41:07 ID:???
- >>900
すみません。ちょっと説明不足でした。
oracleはselect for update wait 10
とすると10秒待機してエラーになります。
このような設定はないでしょうか?
- 902 :NAME IS NULL:2008/08/30(土) 10:02:33 ID:???
- >>901
SQLだけでやりたいなら、statement_timeoutと組み合わせるのかな。
BEGIN;
SET LOCAL statement_timeout = '10s';
SELECT ... FOR UPDATE;
- 903 :NAME IS NULL:2008/08/30(土) 10:17:50 ID:???
- >>902
おぉ!
さんくす。
- 904 :NAME IS NULL:2008/09/03(水) 17:54:16 ID:???
- age 関数が使えない(=結果が微妙な)んだけど、うちの環境だけ?
# select age(timestamp '2009-09-02', timestamp '2008-09-03');
11 mons 29 days
期待しているのは、11 mons 30 days なんですがねぇ。
# select age(timestamp '2009-09-01', timestamp '2008-09-03');
11 mons 28 days
# select age(timestamp '2009-08-31', timestamp '2008-09-03');
11 mons 28 days
なんてなるし。環境は
# select version();
PostgreSQL 8.1.13 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.1
です。
- 905 :NAME IS NULL:2008/09/03(水) 21:03:59 ID:???
- >>904
仕様だな。
# select age(timestamp '2009-09-02', timestamp '2008-09-03');
11 mons 29 days
# select age(timestamp '2009-08-02', timestamp '2008-08-03');
11 mons 30 days
# select age(timestamp '2009-02-02', timestamp '2008-02-03');
11 mons 28 days
# select age(timestamp '2010-02-02', timestamp '2009-02-03');
11 mons 27 days
# select version();
PostgreSQL 8.3.3 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14)
- 906 :NAME IS NULL:2008/09/03(水) 21:25:38 ID:???
- >>905
その結果だけを見ると、単に当日を含むか含まないかの問題のように見えますが
問題はそうじゃないんですよね。
# select age(timestamp '2009-09-03', timestamp '2008-09-03');
1 year
ですし。問題は
1. 2008-09-03 → 2009-09-03 は 1 年(当日を含まないなら、ここが変わるはず)
2. 2008-09-03 → 2009-09-02 は 11 ヶ月 29 日(8 月は 31 日あるから 30 日を期待)
3. 2008-09-03 → 2009-09-01 は 11 ヶ月 28 日
4. 2008-09-03 → 2009-08-31 は 11 ヶ月 28 日(上の 09-01 と同じ結果)
という結果になることなんです。結果がこうなっている以上は仕様なんでしょうけど
これだと、異なる日との差分で同じ結果になることがある(3. と 4.)ので、
微妙に使えない(と私は思う)仕様ですね。
- 907 :NAME IS NULL:2008/09/03(水) 23:19:12 ID:???
- そこが問題になるなら普通に引き算して日にちを出せばいい
- 908 :NAME IS NULL:2008/09/03(水) 23:20:58 ID:???
- intervalを無理に年月日に振るからこうなる
- 909 :NAME IS NULL:2008/09/03(水) 23:29:13 ID:???
- >>907
日数を出すだけで良いなら、最初からそうしますって。
関数ないかなーって探して見つけたと思ったら、上記の
結果だったので、使えない関数だなぁと思って。
誰も問題視してないんでしょうかね。
少なくとも違う日で同じ差分が出るのは問題でしょ。
仕方ないので関数を自作します。
>>908
無理にっていっても、単なるキャストとかじゃなしに、
専用の関数ですよ。内部でどうにでもなるじゃないですか。
- 910 :NAME IS NULL:2008/09/03(水) 23:48:28 ID:???
- さすがウンコDB
- 911 :905:2008/09/04(木) 01:10:58 ID:???
- >>906
あーなるほど、今まで気づかなかった。
マニュアルより
> 異なる月では日数が異なりますのでageで返されるmonthsにはあいまいさがあります。
> PostgreSQLのやり方は月にまたがる2つの日付の計算において、日付の早いほうの月を使用します。
今まで気づかなかったくらいだから、それほど困る場面に直面するわけでもなさそうだが、
頭の片隅においといた方が良さそうね。
- 912 :NAME IS NULL:2008/09/04(木) 02:27:58 ID:???
- >>911
なにー、マニュアルに書いてあったんですか。
http://www.postgresql.jp/document/pg833doc/html/functions-datetime.html
の 9.9.1 の直前ですね。age 関数の説明までしか見てませんでした。すみません。
それなら、完璧に仕様ですね。諦めて自作で進めます。
- 913 :NAME IS NULL:2008/09/04(木) 04:14:41 ID:???
- そもそも、日付の差を取ったときに、何月という情報は
論理的な意味を失うと思うんだが。
- 914 :NAME IS NULL:2008/09/04(木) 08:25:36 ID:???
- 単に age() と operator - () の2つ選択肢があるってことじゃないの?
用途に応じて使い分ければ良いのでは。
確かに age のほうは使い道がビミョーだが。
- 915 :NAME IS NULL:2008/09/04(木) 12:04:55 ID:???
- どこかの国の法律か、どこかの業界の慣習(たとえば保険?)とかで、
このageみたいな定義で計算することになっているところがあるのかも。
281 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
PostgreSQL 2テーブル目 [WebProg]
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.3 2008/07/26
FOX ★ DSO(Dynamic Shared Object)