Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我需要限制通配符来删除PostgreSQL中的模式_Postgresql_Schema_Sql Drop - Fatal编程技术网

为什么我需要限制通配符来删除PostgreSQL中的模式

为什么我需要限制通配符来删除PostgreSQL中的模式,postgresql,schema,sql-drop,Postgresql,Schema,Sql Drop,我在PostgreSQL方面的经验很少。我一直在阅读教程和文档,为了创建或删除模式,他们都说我只需要执行: CREATE SCHEMA myschema; DROP SCHEMA myschema; 但它不起作用。我终于发现我必须使用: CREATE SCHEMA myschema AUTHORIZATION pgsql; DROP SCHEMA myschema RESTRICT; 我是否有一个损坏的安装,或者我添加了一些不应该添加的功能 更新: 如果我使用MacOSX上的pgAdmi

我在PostgreSQL方面的经验很少。我一直在阅读教程和文档,为了创建或删除模式,他们都说我只需要执行:

CREATE SCHEMA myschema; 
DROP SCHEMA myschema; 
但它不起作用。我终于发现我必须使用:

CREATE SCHEMA myschema AUTHORIZATION pgsql;
DROP SCHEMA myschema RESTRICT;
我是否有一个损坏的安装,或者我添加了一些不应该添加的功能

更新: 如果我使用MacOSX上的pgAdmin,它会工作。 我没有收到任何类型的错误或警报。 基本上我只是这样登录pgsql帐户:

su pgsql
然后


有许多因素会导致命令无法正确终止。我相信这个答案也会帮助其他人。这可能看起来过于本地化,但我听说它发生在足够多的初学者身上,值得一写

一般来说,诸如createschema或dropschema之类的实用程序语句将在psql中返回一些内容,无论是错误还是对所做操作的描述。如果不发生这种情况,有些事情就不对了。首先要做的是查看提示符

PostgreSQL中的提示形式为:[dbname][line status][is superuser]

因此,对于新行database mydb,nonsuperuser,提示符如下所示:
mydb=>

如果我是超级用户,我会得到:

mydb=#

现在要查看的关键字符是
=
所在的字符。各种符号具有特殊含义:

  • =
    新行(准备新输入)
  • -
    上一行的继续。你忘了分号了吗
  • 在括号中。括号不平衡
  • 美元引号块中的
    $
    。它们类似于
    $quote$string literal$quote$
  • 在单个带引号的字符串文本块中
  • 在双引号标识符内

可能还有其他一些,但这些是最常见的。通常除了
=
-
,它们都是不言自明的。

奇怪。你是如何创建
myuser
的,你授予了它什么权利?这真的是PostgreSQL,还是像Redshift/Greenplum/等PostgreSQL变体?我想你可能只是在运行正在研究所有权问题,但由于您没有显示您运行的真正命令(考虑到拼写错误),确切的错误消息,或任何关于用户及其权限的信息,很难说。谢谢你的评论,我的用户是pgsql用户,我猜,是在安装过程中创建的,是的,它是freebsd真正的postgresql端口。还有一件奇怪的事,如果我使用Mac OS X的pgAdmin3,它可以完美地工作,但在psql c中没有您可能应该打开
log\u statement='all'
并查看PgAdmin3正在做什么。仍然非常非常奇怪"你是说用户
postgres
?通常没有
pgsql
用户,除非FreeBSD端口与通常的安装特别不同。等等,你刚才是说控制台没有响应吗?不是错误吗?我打赌你只是在控制台输入命令时忘了输入分号。你是对的,我觉得是错的amed,但我记得我用过它们。也许这个bug与Mac OS终端有关。
psql mydatabase