125

我正在使用“postgres”超级用户进行全新的 postgresql 安装。通过以下方式登录:

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

没有错误,但尚未创建表。有任何想法吗?

4

5 回答 5

283

createdb是一个命令行实用程序,您可以从bash而不是从 psql 运行它。要从psql创建数据库,请使用如下create database语句:

create database [databasename];

注意:请务必始终以;

于 2012-11-10T09:59:04.430 回答
90

迟到了,但接受的答案并没有解释为什么没有显示错误。由于这是 Postgres 新手经常偶然发现的东西,我想补充一下。


TL/TR:始终以;


因为createdb databasedid not end with; psql认为语句未完成并等待更多输入。这由提示从postgres=#变为 来表示postgres-#。我希望psql做一个非常微妙的改变(更“突出”)。

通过输入元命令\list,“当前”SQL 语句被“中止”而不执行它。

如果createdb以 a 结束,;则输出将是:

postgres=> createdb foobar;
错误:“createdb”处或附近的语法错误
LINE 1: createdb foobar;
        ^
postgres=>

清楚地表明出了什么问题。

于 2015-12-08T15:19:41.467 回答
5

使用节点终端,我必须运行:

psql -U postgres 

[输入您的密码]

然后 ...

CREATE DATABASE dbadmin;

令人困惑的是,我之前输入了这些相同的命令,但它不起作用。只有在注销并重新登录后,我才能使用文档中的这个标准命令:https ://www.postgresql.org/docs/10/tutorial-createdb.html

于 2020-07-04T20:33:16.330 回答
4

不久前我也处于这种情况。如果其他人遇到这种情况,考虑到命令提示符显示您可以通过简单地键入和返回键postgres-#来执行挂起的 createdb 命令。;

于 2019-01-05T01:05:08.730 回答
1

在 PostgreSQL 中创建新数据库非常简单,在 Linux 上执行这个命令(CentOS 7 示例):

sudo -u postgres psql -c "create database MyDb;"
于 2019-09-28T16:45:03.290 回答