Thread: Create a database with ecpg
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.
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
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!
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!