10 votes

Où est passée ma base de données dans postgres ?

Postgres refuse de fonctionner. J'utilise la version 9.2 et je suis un débutant.

Je crée une base de données. Je la liste et elle n'est pas là ? Il n'y a pas d'erreur ! Où est-il passé ? A-t-elle jamais été créée ?

postgres-# creatdb test
postgres-# \list
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_PH.UTF-8 | en_PH.UTF-8 | 
 template0 | postgres | UTF8     | en_PH.UTF-8 | en_PH.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_PH.UTF-8 | en_PH.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres-# 

postgres@ubuntu:/home/ubuntu$ psql -h 127.0.0.1 -U postgres -d test
Password for user postgres: 
psql: FATAL:  database "test" does not exist

32voto

a_horse_with_no_name Points 100769

Vous avez deux erreurs :

  1. createdb est un commande du système d'exploitation il ne s'agit pas d'une commande SQL. Dans psql vous devez utiliser des instructions SQL et ce serait : CREATE DATABASE . Pour plus de détails, voir le manuel : http://www.postgresql.org/docs/current/static/sql-createdatabase.html

  2. Chaque instruction SQL doit être terminée par un caractère ; . Comme vous ne l'avez pas fait, votre instruction n'a pas été exécutée et vous n'avez donc pas reçu d'erreur. Pour plus de détails, consultez le manuel : http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html

    postgres=# createdb test; ERROR: syntax error at or near "createdb" LINE 1: createdb test; ^ postgres=# create database test; CREATE DATABASE postgres=# \list List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+---------------------+---------------------+----------------------- postgres | postgres | UTF8 | German_Germany.1252 | German_Germany.1252 | template0 | postgres | UTF8 | German_Germany.1252 | German_Germany.1252 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | German_Germany.1252 | German_Germany.1252 | postgres=CTc/postgres+ | | | | | =c/postgres test | postgres | UTF8 | German_Germany.1252 | German_Germany.1252 | 10 rows)

    postgres=#

1voto

ahmad shorif Points 1

Createdb est une commande shell et non une commande postgres, c'est pourquoi elle n'affiche aucun message d'erreur ou de réussite.

Pour créer une base de données à partir de votre terminal, vous devez faire ceci.

sudo -u postgres createdb databaseName

Pour créer une base de données à partir de la commande postgres, vous devez exécuter les commandes suivantes l'une après l'autre

sudo -u postgres psql
CREATE DATABASE testDB;

Si la base de données est créée avec succès, vous obtiendrez un message de succès par "CREATE DATABASE".

enter image description here

Pour voir la liste de votre base de données, écrivez cette commande

\l

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X