Thread: SQL probs with phplib
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
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)
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