Postgresql没有以“createdb”作为超级用户创建数据库,但没有输出错误

时间:2012-11-10 09:54:04

标签: postgresql psql

我正在使用'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

没有错误,但是没有创建表。有什么想法吗?

5 个答案:

答案 0 :(得分:153)

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

create database [databasename];

注意:请务必使用;

结束SQL语句

答案 1 :(得分:55)

晚会,但接受的答案并不能解释为什么没有显示错误。由于这是Postgres新成员经常偶然发现的事情,我想补充一点。

TL / TR:始终使用;

结束您的SQL语句

因为createdb database未以; psql结尾,认为该语句未完成并等待更多输入。提示从postgres=#更改为postgres-#即表示这一点。我希望psql做出一个非常微妙的变化会做出不同的改变(更“突出”)。

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

如果createdb;结束,则输出将为:

postgres=> createdb foobar;
ERROR:  syntax error at or near "createdb"
LINE 1: createdb foobar;
        ^
postgres=>

清楚地表明出现了问题。

答案 2 :(得分:0)

不久前我处于这种情况。万一其他人遇到这种情况,考虑到命令提示符显示postgres-#,您只需键入;和返回键即可执行挂起的createdb命令。

答案 3 :(得分:0)

在PostgreSQL中创建新数据库非常简单,请在Linux上执行此命令(以CentOS 7为例):

sudo -u postgres psql -c "create database MyDb;"

答案 4 :(得分:0)

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

psql -U postgres 

[输入密码]

然后...

CREATE DATABASE dbadmin;

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