Обсуждение: SQL probs with phplib

Поиск
Список
Период
Сортировка

SQL probs with phplib

От
"Oliver Duke-Williams"
Дата:
Hi,

I'm trying to set up phplib (release 5) for use with postgresql(6.3 I
_think_ but pg_version is empty, and I can't see an actual version
number anywhere... ), and having a couple of problems with the supplied
file create_database.sql (originally written with mySQL in mind).

Specifically, in the first table created:

CREATE TABLE active_sessions (
  sid varchar(32) DEFAULT '' NOT NULL,
  name varchar(32) DEFAULT '' NOT NULL,
  val text,
  changed varchar(14) DEFAULT '' NOT NULL,
  PRIMARY KEY (sid,name),
  KEY changed (changed)
);

an error is reported:

ERROR:  type name lookup of changed failed

(In postgres, do I need to go though a 'create type' process here?)

and in the second table:

CREATE TABLE auth_user (
  uid varchar(32) DEFAULT '' NOT NULL,
  username varchar(32) DEFAULT '' NOT NULL,
  password varchar(32) DEFAULT '' NOT NULL,
  perms varchar(255),
  PRIMARY KEY (uid),
  UNIQUE k_username (username)
);

the following error is generated:

ERROR:  parser: Syntax error at or near "k_username"

(Will this need some additional command aling the lines of
'create unique index'?)

Having drawn a blank in searching list archives, I'd be grateful for any
advice about what the correct pgsql versions of the above should be.

NB:  This is posted to two lists - I'm happy to summarise later if people
don't want to xpost replies.

Thanks,

Oliver


Re: [PHPLIB] SQL probs with phplib

От
"Kristian Köhntopp"
Дата:
Oliver Duke-Williams wrote:
>   changed varchar(14) DEFAULT '' NOT NULL,

> ERROR:  type name lookup of changed failed

changed is a regular varchar(14) and should be taken by Postgres without
problems. At least my Postgres did.

> ERROR:  parser: Syntax error at or near "k_username"

Just don´t name that key (leave out the k_username). Alternatively
define the table without keys first and add the keys later using the
CREATE INDEX statement.

> Having drawn a blank in searching list archives, I'd be grateful
> for any advice about what the correct pgsql versions of the above
> should be.

Postgres support is new in release-5 of PHPLIB. There are not many
success reports with Postgres up to now. I am a MySQL type myself and
very new to Postgres...

Kristian

--
SH Online Dienst GmbH, Kristian Koehntopp,
Siemenswall, 24107 Kiel, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)

Re: [SQL] SQL probs with phplib

От
David Hartwig
Дата:
Oliver Duke-Williams wrote:

> Hi,
>
> I'm trying to set up phplib (release 5) for use with postgresql(6.3 I
> _think_ but pg_version is empty, and I can't see an actual version
> number anywhere... ), and having a couple of problems with the supplied
> file create_database.sql (originally written with mySQL in mind).
>
> Specifically, in the first table created:
>
> CREATE TABLE active_sessions (
>   sid varchar(32) DEFAULT '' NOT NULL,
>   name varchar(32) DEFAULT '' NOT NULL,
>   val text,
>   changed varchar(14) DEFAULT '' NOT NULL,
>   PRIMARY KEY (sid,name),
>   KEY changed (changed)
> );
>
> an error is reported:
>
> ERROR:  type name lookup of changed failed
>
> (In postgres, do I need to go though a 'create type' process here?)
>

Try

CREATE TABLE active_sessions (
  sid varchar(32) DEFAULT '',
  name varchar(32) DEFAULT '',
  val text,
  changed varchar(14) DEFAULT '' NOT NULL,
  PRIMARY KEY (sid,name),
);

CREATE [UNIQUE] INDEX {index_name} ON active_sessions USING btree(changed);

-- NOT NULL is implied in a primary key

> and in the second table:
>
> CREATE TABLE auth_user (
>   uid varchar(32) DEFAULT '' NOT NULL,
>   username varchar(32) DEFAULT '' NOT NULL,
>   password varchar(32) DEFAULT '' NOT NULL,
>   perms varchar(255),
>   PRIMARY KEY (uid),
>   UNIQUE k_username (username)
> );
>
> the following error is generated:
>
> ERROR:  parser: Syntax error at or near "k_username"
>
> (Will this need some additional command aling the lines of
> 'create unique index'?)
>

And:

CREATE TABLE auth_user (
  uid varchar(32) PRIMARY KEY DEFAULT '',
  username varchar(32) DEFAULT '' NOT NULL,
  password varchar(32) DEFAULT '' NOT NULL,
  perms varchar(255)
);

CREATE UNIQUE INDEX username_k ON auth_user USING btree(username);

--  Though correct syntactically,  a DEFAULT for any key column rarely makes
good sense.

--

\h create table

-- at the psql prompt display allowable syntax