Обсуждение: Create tables using Perl DBI

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

Create tables using Perl DBI

От
"David Coley"
Дата:
I've been trying to learn how to use PostgreSQL and Perl together on a test
machine at work.  My problem is that I can not seem to get it working.  The
documentation on the subject don't seem to be that in-depth and tutorials
seem lacking :)

Below is my third or forth try at getting my database to connect and create
a table.  I've included the error code for the code snippet.  Any help would
be GREATLY appreciated.


=== Begin Code ===

#!/usr/bin/perl

# Use the Database Binding Interface
use DBI;

# We want to use the  database which is kwsclient
$dbh = DBI->connect("dbi:Pg:dbname=kwsclient","db","PASSWORD")or die "Connecting: $DBI::errstr";

#abcdefghijklmnopqrstuvwxyz
$sth = $dbh->prepare("create table customer (ID serial PRIMARY KEY, name
text NOT NULL,                     email text NOT NULL, phone text NOT NULL, fax text
DEFAULT, address                 text NOT NULL, address2 text DEFAULT, zip text NOT
NULL, city text                 NOT NULL, state text NOT NULL, country text NOT NULL")        or die "Could not Create
Table:$DBI::errstr";
 
$sth->execute;
#disconnect from the database.
$dbh->disconnect();
# END

=== End Code ===

=== Error Message ===
DBD::Pg::st execute failed: ERROR:  parser: parse error at or near ","


Thanks for the help.

David Coley
davidcoley@home.com
http://www.davidcoley.com



Re: Create tables using Perl DBI

От
Alvar Freude
Дата:
Hi,

> $sth = $dbh->prepare("create table customer (
>  ID serial PRIMARY KEY,
>  name text NOT NULL, 
>  email text NOT NULL,
>  phone text NOT NULL,
>  fax text DEFAULT, 
[...]

there is a default text required I guess!


bye Alvar



-- 
Alvar C.H. Freude  |  alvar.freude@merz-akademie.de
   Demo: http://www.online-demonstration.org/  |  Mach mit!
Blast-DE: http://www.assoziations-blaster.de/   |  Blast-Dich-Fit
Blast-EN: http://www.a-blast.org/               |  Blast/english


Re: Create tables using Perl DBI

От
"Jeremy Buchmann"
Дата:
>$sth = $dbh->prepare("create table customer (ID serial PRIMARY KEY, name
>text NOT NULL,      email text NOT NULL, phone text NOT NULL, fax text
>DEFAULT, address     text NOT NULL, address2 text DEFAULT, zip text NOT
>NULL, city text     NOT NULL, state text NOT NULL, country text NOT NULL")
>or die "Could not Create Table: $DBI::errstr";

It looks like you're missing a ")" in there somewhere.
Parse error usually = syntax error.

--
Jeremy Buchmann
System Admin/Database Programmer
Wells Gaming Research

----------
>From: "David Coley" <davidcoley@home.com>
>To: <pgsql-interfaces@postgresql.org>
>Subject: [INTERFACES] Create tables using Perl DBI
>Date: Mon, Nov 20, 2000, 12:50 PM
>

> I've been trying to learn how to use PostgreSQL and Perl together on a test
> machine at work.  My problem is that I can not seem to get it working.  The
> documentation on the subject don't seem to be that in-depth and tutorials
> seem lacking :)
>
> Below is my third or forth try at getting my database to connect and create
> a table.  I've included the error code for the code snippet.  Any help would
> be GREATLY appreciated.
>
>
> === Begin Code ===
>
> #!/usr/bin/perl
>
> # Use the Database Binding Interface
> use DBI;
>
> # We want to use the  database which is kwsclient
> $dbh = DBI->connect("dbi:Pg:dbname=kwsclient","db","PASSWORD")
>  or die "Connecting: $DBI::errstr";
>
> #abcdefghijklmnopqrstuvwxyz
> $sth = $dbh->prepare("create table customer (ID serial PRIMARY KEY, name
> text NOT NULL,      email text NOT NULL, phone text NOT NULL, fax text
> DEFAULT, address     text NOT NULL, address2 text DEFAULT, zip text NOT
> NULL, city text     NOT NULL, state text NOT NULL, country text NOT NULL")
>    or die "Could not Create Table: $DBI::errstr";
> $sth->execute;
> #disconnect from the database.
> $dbh->disconnect();
> # END
>
> === End Code ===
>
> === Error Message ===
> DBD::Pg::st execute failed: ERROR:  parser: parse error at or near ","
>
>
> Thanks for the help.
>
> David Coley
> davidcoley@home.com
> http://www.davidcoley.com
>
> 


Re: Create tables using Perl DBI

От
"Ross J. Reedstrom"
Дата:
On Tue, Nov 21, 2000 at 12:38:41PM -0800, Jeremy Buchmann wrote:
> 
> It looks like you're missing a ")" in there somewhere.
> Parse error usually = syntax error.
> 

Good eye Jeremy. David, add a right paren between the last NULL and the close
quote. Should work then.

Ross

-- 
Open source code is like a natural resource, it's the result of providing
food and sunshine to programmers, and then staying out of their way.
[...] [It] is not going away because it has utility for both the developers 
and users independent of economic motivations.  Jim Flynn, Sunnyvale, Calif.


RE: Create tables using Perl DBI

От
"David Coley"
Дата:
Hum... I tried adding that extra ) at end of the prepare:

$sth = $dbh->prepare("create table customer (ID serial PRIMARY KEY, name
text NOT NULL, email text NOT NULL, phone text NOT NULL, fax text DEFAULT,
address text NOT NULL, address2 text DEFAULT, zip text NOT NULL, city text
NOT NULL, state text NOT NULL, country text NOT NULL)")   or die "Could not Create Table:
$DBI::errstr";$sth->execute;#disconnectfrom the database.$dbh->disconnect();
 

>
> It looks like you're missing a ")" in there somewhere.
> Parse error usually = syntax error.
>

Still the same error:

DBD::Pg::st execute failed: ERROR:  parser: parse error at or near ","

David Coley
davidcoley@home.com
http://www.davidcoley.com



Re: Create tables using Perl DBI

От
"Ross J. Reedstrom"
Дата:
Hmm, after reformating your SQL so I can read it, I found this:

"create table customer (         ID serial PRIMARY KEY,         name text NOT NULL,         email text NOT NULL,
phone text NOT NULL,
 
--->      fax text DEFAULT,         address text NOT NULL,
--->      address2 text DEFAULT,         zip text NOT NULL,         city text NOT NULL,         state text NOT NULL,
    country text NOT NULL)"
 

What are you expecting to happen with DEFAULT with nothing after it?
That's the 'at or near ","' part. Either drop the DEFAULT or add a text
to default to.

Are you perhaps looking for NULL? (as apposed to NOT NULL?) It's allowed
in the grammar, but is the default, so you don't need it.

Ross

On Tue, Nov 21, 2000 at 04:50:54PM -0500, David Coley wrote:
> Hum... I tried adding that extra ) at end of the prepare:
> 
> $sth = $dbh->prepare("create table customer (ID serial PRIMARY KEY, name
> text NOT NULL, email text NOT NULL, phone text NOT NULL, fax text DEFAULT,
> address text NOT NULL, address2 text DEFAULT, zip text NOT NULL, city text
> NOT NULL, state text NOT NULL, country text NOT NULL)")
>     or die "Could not Create Table: $DBI::errstr";
>  $sth->execute;
>  #disconnect from the database.
>  $dbh->disconnect();
> 
> >
> > It looks like you're missing a ")" in there somewhere.
> > Parse error usually = syntax error.
> >
> 
> Still the same error:
> 
> DBD::Pg::st execute failed: ERROR:  parser: parse error at or near ","
> 
> David Coley
> davidcoley@home.com
> http://www.davidcoley.com
> 


RE: Create tables using Perl DBI

От
"David Coley"
Дата:
Wow... it worked.  See what happens when you learning you make little
mistakes.  Should have realized that earlier when someone else suggested.
Thanks a lot everyone.

DC

>>>

Hmm, after reformating your SQL so I can read it, I found this:

"create table customer (         ID serial PRIMARY KEY,         name text NOT NULL,         email text NOT NULL,
phone text NOT NULL,
 
--->      fax text DEFAULT,         address text NOT NULL,
--->      address2 text DEFAULT,         zip text NOT NULL,         city text NOT NULL,         state text NOT NULL,
    country text NOT NULL)"
 

What are you expecting to happen with DEFAULT with nothing after it?
That's the 'at or near ","' part. Either drop the DEFAULT or add a text
to default to.

Are you perhaps looking for NULL? (as apposed to NOT NULL?) It's allowed
in the grammar, but is the default, so you don't need it.

Ross