为什么我需要限制通配符来删除PostgreSQL中的模式
我在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
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