Je travaille avec une nouvelle installation postgresql, avec le super-utilisateur 'postgres'. Connecté via:
Sudo -u postgres psql
postgres=# createdb database
postgres-# \list
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
template0 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
: postgres=CTc/postgres
Aucune erreur, mais la table n'est pas en cours de création. Des idées?
createdb
est un utilitaire de ligne de commande que vous pouvez exécuter à partir de bash et non à partir de psql. Pour créer une base de données à partir de psql , utilisez l'instruction create database
comme suit:
create database [databasename];
Remarque: veillez à toujours terminer vos instructions SQL avec ;
En retard pour le parti, mais la réponse acceptée n'explique pas pourquoi aucune erreur n'est affichée. Et comme c'est quelque chose qui tombe souvent sur les nouveaux arrivants de Postgres, je voulais ajouter cela.
TL/TR: finissez toujours vos instructions SQL avec ;
Parce que le createdb database
ne s'est pas terminé par ;
psql
pense que l'instruction n'est pas terminée et attend d'autres entrées. Ceci est indiqué par l'invite qui passe de postgres=#
à postgres-#
. Un changement extrêmement subtil que je souhaite psql
ferait différemment (plus "important").
En entrant la méta-commande \list
, l'instruction SQL "actuelle" est "abandonnée" sans l'exécuter.
Si la createdb
s'était terminée par un ;
, le résultat aurait été:
postgres => createdb foobar; ERROR: erreur de syntaxe proche de "createdb" LINE 1: createdb foobar; ^ postgres =>
Montrer clairement que quelque chose n'allait pas.
J'étais dans cette situation il n'y a pas longtemps. Au cas où quelqu'un d'autre l'aurait rencontré, considérant que la commande Invite affiche postgres-#
, vous pouvez exécuter la commande createdb en attente en tapant simplement ;
et la clé de retour.