Thread: Create a database with ecpg

Create a database with ecpg

From
rodneyr@embratel.com.br
Date:
I include the following statement in my program to create a database:

"EXEC SQL CREATE DATABASE testbase;"

Then I compiled it, using ecpg, but the database was't been created.

When a try to open it with "psql" I receive the message:

Connection to database 'testbase' failed.
FATAL 1:  Database testbase does not exist in pg_database

Is there any mistake in my statement?

P.S.: I compiled the program without receiving any mistake message.

Thank you.

Rodney.




Re: [INTERFACES] Create a database with ecpg

From
Hannu Krosing
Date:
rodneyr@embratel.com.br wrote:
> 
> I include the following statement in my program to create a database:
> 
> "EXEC SQL CREATE DATABASE testbase;"
> 
> Then I compiled it, using ecpg, but the database was't been created.

Did you connect (to template1 or any other existing DB) first ?

-----------
Hannu


Re: [INTERFACES] Create a database with ecpg

From
Michael Meskes
Date:
On Tue, Sep 21, 1999 at 10:15:33PM -0300, rodneyr@embratel.com.br wrote:
> "EXEC SQL CREATE DATABASE testbase;"
> 
> Then I compiled it, using ecpg, but the database was't been created.
> 
> When a try to open it with "psql" I receive the message:
> 
> Connection to database 'testbase' failed.
> FATAL 1:  Database testbase does not exist in pg_database

To be honest, I never tried that. I will as soon as I find the time.

Michael
-- 
Michael Meskes                         | Go SF 49ers!
Th.-Heuss-Str. 61, D-41812 Erkelenz    | Go Rhein Fire!
Tel.: (+49) 2431/72651                 | Use Debian GNU/Linux!
Email: Michael@Fam-Meskes.De           | Use PostgreSQL!


Re: [INTERFACES] Create a database with ecpg

From
Michael Meskes
Date:
On Tue, Sep 21, 1999 at 10:15:33PM -0300, rodneyr@embratel.com.br wrote:
> "EXEC SQL CREATE DATABASE testbase;"
> 
> Then I compiled it, using ecpg, but the database was't been created.

In fact only a directory was created, right?

> When a try to open it with "psql" I receive the message:
> 
> Connection to database 'testbase' failed.
> FATAL 1:  Database testbase does not exist in pg_database
> 
> Is there any mistake in my statement?

Yes and no. The statement itself is correct. However, the usage is not. I
take it you are executing the statement inside a transaction but do not
issue a commit afterwards. Thus pg_database is not updated at all.

Please try calling EXEC SQL COMMIT; after the CREATE DATABASE call. This
should work. At least it does for me. 

Or call ecpg with parameter '-t' to switch off autotransaction mode. With
'-t' the CREATE DATABASE statement becomes a transaction for itself and thus
is committed once it returns.

Hope this helps.

Michael
-- 
Michael Meskes                         | Go SF 49ers!
Th.-Heuss-Str. 61, D-41812 Erkelenz    | Go Rhein Fire!
Tel.: (+49) 2431/72651                 | Use Debian GNU/Linux!
Email: Michael@Fam-Meskes.De           | Use PostgreSQL!