位置情報で子どもの居場所をお知らせ

Postgresql7.2.4で
user:postgresにより
CREATE TABLE test (id serial PRIMARY KEY,num INT4)
というテーブルを作成し、
GRANT ALL ON test TO PUBLIC
と権限を与えました。
そしてPHP4よりuser:nobodyで
INSERT INTO test (num) VALUES (1)
というクエリを実行しようとすると
ERROR: test_id_seq.nextval: you don't have permissions to set sequence wash_h_test_id_seq in test.php
とでます。
しかし
INSERT INTO test (id,num) VALUES (1,1)
とするとちゃんとデータベースに反映されます。
PHPで、このユーザーからserialを使った自動連番で
書き込めるようにするにはどうすればいいのでしょうか。

A 回答 (1件)

> ERROR: test_id_seq.nextval: you don't have permissions to set sequence wash_h_test_id_seq in test.php


sequenceに関する権限が与えられてないって言われてるので、

GRANT ALL ON SEQUENCE wash_h_test_id_seq TO PUBLIC;

とすれば動くのではないでしょうか?

参考URL:http://www.postgresql.jp/document/pg825doc/html/ …
    • good
    • 0
この回答へのお礼

お陰で解決いたしました。
どうもありがとうございました。
また返事が遅くなり申し訳ありませんでした。

お礼日時:2008/02/07 19:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qcastの使用法について(初心者です)

始めまして。初心者ですので基本的な質問になるかもしれませんがよろしくお願いします!

なぜかPostgreSQLを仕事に使うことになり、四苦八苦しています。

テーブルを作成しているときに、
create table syouhin (shinamono text, nedan int);
とするとします。
で、insert でデータを入れていきますが、
例:
shinamono | nedan
------------------
みかん |100
マンゴー |200

例えば、nedan のcast が今、int にしましたが、これをchar やfloatに変えたいときはどうすればよろしいのでしょうか?

どなたか御存じの方、お手数ですがお教え下さい!!!

Aベストアンサー

CAST関数の文法は、CAST(○ AS △) となります。
○:変換する値
△:変換する型

Select CAST(nedan AS char(10)) ~
とすればできると思いますよ

Qpostgresqlの接続ポート5432から5433に変更したら

お世話になります。
postgresql ポート変更を5432から5433に変更し,psql -lを実行したら、
Is the server running locally and accepting conection on Unix domain socket "tmp/.s.5432"?
というエラーが発生しました。5432に戻すとエラーは消えるのですが、環境上5433で接続したいのですが、どこが悪いのか全く検討がつきません。
ご指導をお願い致します。

Aベストアンサー

標準の5432以外に設定した場合は
psql -p 5433
のように -p オプションでポート番号を指定してください。

Qpostgresに接続できない

環境はxp、apache2、php5、Postgresql8.2です。

ただ今PHPとPostgresqlの勉強をしています。

postgresに接続できなくて困っています。

<?php
$d_base = pg_connect("user='postgres' password=xxxx dbname='test'"); //データベースに接続
で、エラーになり
その内容は、

Warning: pg_connect() [function.pg-connect]:
Unable to connect to PostgreSQL server:
could not connect to server:
Connection refused (0000000000D/00000)
Is the server running on host "???"
and accepting TCP/IP connections on port 5432? in


です。

ご教示して頂けたら幸いです。

環境はxp、apache2、php5、Postgresql8.2です。

ただ今PHPとPostgresqlの勉強をしています。

postgresに接続できなくて困っています。

<?php
$d_base = pg_connect("user='postgres' password=xxxx dbname='test'"); //データベースに接続
で、エラーになり
その内容は、

Warning: pg_connect() [function.pg-connect]:
Unable to connect to PostgreSQL server:
could not connect to server:
Connection refused (0000000000D/00000)
Is the server running on host "???"
and acc...続きを読む

Aベストアンサー

接続できないトラブルの原因は大きく分けて以下の3つ
1.経路が繋がっていない。線が繋がっているように見えても、論理的に切断されている場合もある。
2.接続先(今回はPostgreSQL)が接続を受け付けていない。
3.接続元(今回はPHP5)が接続しにいく設定になっていない。
PHP君は「PostgreSQL君が接続を待ち受けていないよ」と言っている。なので、2番ではないかと考えられる。PHP側でpg_connectにhost=hogehogeを記述していないので正しいマシンに接続にいっていないという3番の可能性もあるにはあるんだけど。

見るべきはPostgreSQLの設定。とりあえず
postgresql.confを開いて、
listen_addresses = '*'
という風になっているか確認。無ければ次のいずれかに設定する。
listen_addresses='127.0.0.1'
listen_addresses='<マシンのIPアドレス>'
listen_addresses='*'
上から順番に安全だ。ただし、一番上はPHPとPostgreSQLが同じマシンで動作していなければいけない。

ところで、恐らくここで詰まったという事は、これが解決しても次の段階で詰まると思われる。上のpostgresql.confと同じ場所にあるであろうpg_hba.confもあわせて確認しておきたい。とりあえず設定例だけ掲載しておくので後は検索いただきたい。
host all all 127.0.0.1/32 password sameuser

接続できないトラブルの原因は大きく分けて以下の3つ
1.経路が繋がっていない。線が繋がっているように見えても、論理的に切断されている場合もある。
2.接続先(今回はPostgreSQL)が接続を受け付けていない。
3.接続元(今回はPHP5)が接続しにいく設定になっていない。
PHP君は「PostgreSQL君が接続を待ち受けていないよ」と言っている。なので、2番ではないかと考えられる。PHP側でpg_connectにhost=hogehogeを記述していないので正しいマシンに接続にいっていないという3番の可能性もあるにはあるんだけど。
...続きを読む


人気Q&Aランキング