Strange interaction with php's pg_query
I'm a little burned out right now, so I figured I'll ask the
question before calling quits for tonight, and (hopefully) the
answer will be in my inbox come morning. ;)
I'm building a web app in php with Postgre as the backend db.
I'm pretty new to Postgre, but I've done a lot of work with
php+MySQL.
I have a simple table as follows:
create table sysinfo (
attname char(30) primary key,
attvalue text
) without oids
And if I start psql and enter:
"select * from sysinfo"
I get the expected list of name/value pairs that were entered
into the table at an earlier operation.
However, if I execute the same query using pg_query() in php,
I get the error:
Warning: pg_query() query failed: ERROR: Relation "sysinfo" does not exist in /usr/home/group/webpages/epd/class/base.class.php on line 44
This really confuses me, as "sysinfo" isn't even a relation and
why should the parser even imagine it to be a relation? I've
tried rearranging the SELECT statement (with and without WHERE
clauses, with and without FROM clause). Every incarnation I try
works fine in the psql program, but gives the same error (as above)
in php.
I'm using FreeBSD 4.5-STABLE as of April 23rd, Postgres 7.2.1_1,
mod_php4-4.2.0, and apache-1.3.24_7 all installed from FreeBSD
ports collection.
Any advice is much welcome.
--
Bill Moran
Potential Technology
http://www.potentialtech.com
Bill Moran <wmoran@potentialtech.com> writes:
And if I start psql and enter:
"select * from sysinfo"
I get the expected list of name/value pairs that were entered
into the table at an earlier operation.
However, if I execute the same query using pg_query() in php,
I get the error:
Warning: pg_query() query failed: ERROR: Relation "sysinfo" does not exist in /usr/home/group/webpages/epd/class/base.class.php on line 44
I think your php client must be connecting to a different database
than you are connecting to when you run psql by hand. If you are
allowing the default choice of database name = user name to be taken,
this isn't real surprising...
This really confuses me, as "sysinfo" isn't even a relation and
why should the parser even imagine it to be a relation?
"relation" and "table" are more or less synonymous in PG error messages.
(IMHO the exact meaning of "relation" in our code is "something with a
pg_class entry", which covers also views, sequences, indexes, etc; but
you probably didn't need to know that.)
regards, tom lane
Tom Lane wrote:
Bill Moran <wmoran@potentialtech.com> writes:
And if I start psql and enter:
"select * from sysinfo"
I get the expected list of name/value pairs that were entered
into the table at an earlier operation.However, if I execute the same query using pg_query() in php,
I get the error:
Warning: pg_query() query failed: ERROR: Relation "sysinfo" does not exist in /usr/home/group/webpages/epd/class/base.class.php on line 44I think your php client must be connecting to a different database
than you are connecting to when you run psql by hand. If you are
allowing the default choice of database name = user name to be taken,
this isn't real surprising...
That's it. I guess it really was _too_ late for me to be working
on this last night. Thanks.
This really confuses me, as "sysinfo" isn't even a relation and
why should the parser even imagine it to be a relation?"relation" and "table" are more or less synonymous in PG error messages.
(IMHO the exact meaning of "relation" in our code is "something with a
pg_class entry", which covers also views, sequences, indexes, etc; but
you probably didn't need to know that.)
That helps too. Knowing the terminology that Postgre uses will help
me be less of a dummy when interpreting error messages in the future.
--
Bill Moran
Potential Technology
http://www.potentialtech.com
Sorry, but we really need to see your code. My guess is that you've got a
simple syntax error in your php script and php thinks it's interpreting
your sql statement.
On Mon, 13 May 2002, Bill Moran wrote:
Show quoted text
I'm a little burned out right now, so I figured I'll ask the
question before calling quits for tonight, and (hopefully) the
answer will be in my inbox come morning. ;)I'm building a web app in php with Postgre as the backend db.
I'm pretty new to Postgre, but I've done a lot of work with
php+MySQL.I have a simple table as follows:
create table sysinfo (
attname char(30) primary key,
attvalue text
) without oidsAnd if I start psql and enter:
"select * from sysinfo"
I get the expected list of name/value pairs that were entered
into the table at an earlier operation.However, if I execute the same query using pg_query() in php,
I get the error:
Warning: pg_query() query failed: ERROR: Relation "sysinfo" does not exist in /usr/home/group/webpages/epd/class/base.class.php on line 44This really confuses me, as "sysinfo" isn't even a relation and
why should the parser even imagine it to be a relation? I've
tried rearranging the SELECT statement (with and without WHERE
clauses, with and without FROM clause). Every incarnation I try
works fine in the psql program, but gives the same error (as above)
in php.I'm using FreeBSD 4.5-STABLE as of April 23rd, Postgres 7.2.1_1,
mod_php4-4.2.0, and apache-1.3.24_7 all installed from FreeBSD
ports collection.Any advice is much welcome.