Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。

3
查找层次结构字段的最高级别:带有CTE或不带有CTE
注意:此问题已更新,以反映出我们当前正在使用MySQL,这样做之后,我想知道如果切换到支持CTE的数据库会容易得多。 我有一个带有主键id和外键的自引用表parent_id。 +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | parent_id | int(11) | YES | | NULL | | | name | varchar(255) | YES | | NULL …


12
PostgreSQL无法在Mac上运行
整个错误显示为: psql:无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并在Unix域套接字“ /tmp/.s.PGSQL.5432”上接受连接? 这是我第二次在Mac上通过Homebrew设置Postgresql,我不知道发生了什么。以前,它一直在工作。在某个时候,我必须输入一个使事情搞砸的命令。我不确定。现在,每当我从命令行输入SQL命令时,都会收到上述消息。我已经运行了一个命令来检查服务器是否正在运行,并且显然没有运行。如果我尝试使用启动服务器 $ postgres -D / usr / local / pgsql / data 我收到以下错误: postgres无法访问服务器配置文件“ /usr/local/pgsql/data/postgresql.conf”:没有这样的文件或目录 我已经通过Homebrew卸载并重新安装了Postgresql,但是问题仍然存在。我完全不知道该如何工作。任何帮助,将不胜感激。
55 postgresql 

3
如何插入包含外键的行?
使用PostgreSQL v9.1。我有以下表格: CREATE TABLE foo ( id BIGSERIAL NOT NULL UNIQUE PRIMARY KEY, type VARCHAR(60) NOT NULL UNIQUE ); CREATE TABLE bar ( id BIGSERIAL NOT NULL UNIQUE PRIMARY KEY, description VARCHAR(40) NOT NULL UNIQUE, foo_id BIGINT NOT NULL REFERENCES foo ON DELETE RESTRICT ); 假设第一个表foo是这样填充的: INSERT INTO foo (type) …

4
如何在Mac OS X上运行psql?
我使用一键安装程序在装有Mac OS X的计算机上安装了PostgreSQL 。然后,我尝试使用psql命令访问PostgreSQL ,但是它似乎不可用。 我收到此消息: psql -bash: psql: command not found 我还需要安装更多东西吗?或者如何配置PostgreSQL,以便可以在计算机上使用它?

6
如何有效地获取“最近对应的行”?
我有一个必须非常常见的查询模式,但是我不知道如何为它编写有效的查询。我想查找与“最近日期不晚于”另一个表的行相对应的表的行。 例如,我有一张桌子,inventory它代表我当天持有的库存。 date | good | quantity ------------------------------ 2013-08-09 | egg | 5 2013-08-09 | pear | 7 2013-08-02 | egg | 1 2013-08-02 | pear | 2 还有一张表,上面写着“价格”,该表保存了某天的商品价格 date | good | price -------------------------- 2013-08-07 | egg | 120 2013-08-06 | pear | 200 2013-08-01 | egg | 110 …

7
是否可以使用PostgreSQL快速创建/恢复数据库快照?
首先,我是一名开发人员,而不是DBA或sysadmin。请轻柔:) 我正在开发一个应用程序工作流,其中一个用户操作将触发数据库中的复杂更改-在某些表中创建数百条记录,在其他表中更新数百条记录,等等。总共约有12个表(约100个表) )被此操作所感动。由于复杂性,在执行其他测试之前,我很难手动还原所有更改。在开发的大部分时间里,我可以在工作流的末尾插入一个“ ROLLBACK”语句,但是当我接近提交更改时,我需要测试真实的东西。 我有要使用的生产数据库的本地副本。就我而言,测试之间的转储和还原比编写脚本撤消所有更改要快。它的速度更快,但仍然使我放慢了速度(在老化的笔记本电脑上,还原大约需要20分钟)。有什么方法可以保存数据库当前状态的快照,然后快速将其还原? 我保证是系统上唯一的用户,并且我具有root访问权限。tar和gzip压缩后,数据库转储约为100MB。PostgreSQL版本是8.3。 在此先感谢您提供任何有用的想法。

1
如何在DATABASE vs SCHEMA上为用户管理默认特权?
我想将一个相当简单的内部数据库驱动的应用程序从SQLite3迁移到PostgreSQL 9.3,并在我进行操作时加强数据库中的权限。 该应用程序当前包含一个用于更新数据的命令。和一个查询它。当然,我还需要以其他方式维护数据库(创建新表,视图,触发器等)。 虽然此应用程序最初将是服务器上唯一托管的应用程序,但我更倾向于假设将来它可能与其他数据库一起托管在服务器上,而不是在必要时稍后进行争夺。未来。 我认为这些是相当普遍的一组要求,但是我很难找到一个简单的教程来解释如何使用这种用户/特权分离在PostgreSQL中设置新数据库。有关组,用户,角色,数据库,架构和域的参考详细介绍。但我发现它们令人困惑。 到目前为止,这是我尝试过的内容(来自psql“ postgres”): CREATE DATABASE hostdb; REVOKE ALL ON DATABASE hostdb FROM public; \connect hostdb CREATE SCHEMA hostdb; CREATE USER hostdb_admin WITH PASSWORD 'youwish'; CREATE USER hostdb_mgr WITH PASSWORD 'youwish2'; CREATE USER hostdb_usr WITH PASSWORD 'youwish3'; GRANT ALL PRIVILEGES ON DATABASE hostdb TO hostdb_admin; GRANT CONNECT …

3
删除用户postgres的密码要求
我了解到,安装后,PostgreSQL的数据库root用户(postgres)没有密码: postgres=# select usename, passwd is null from pg_shadow; usename | ?column? ----------+---------- postgres | t (1 row) ...,建议您设置以下内容: alter role postgres password '<<very-secret>>'; (然后相应地更新pg_hba.conf文件) 我的问题是:当user不需要密码时,用于恢复到先前情况的SQL是什么postgres? 通常,如何删除任何角色的密码要求?我不是在问如何更改密码,而是要删除密码要求(passwd表中的空列pg_shadow)。

4
功能表现
由于MySQL的背景,存储过程的性能(较旧的文章)和可用性令人怀疑,我正在为我的公司评估PostgreSQL的新产品。 我想做的一件事是将一些应用程序逻辑移到存储过程中,因此我在这里要求在PostgreSQL(9.0)中使用函数时应做的DO和不做的(最佳实践),特别是关于性能陷阱。

2
now()和current_timestamp之间的区别
在PostgreSQL中,我使用now()and current_timestamp函数,但没有区别: # SELECT now(), current_timestamp; now | now --------------------------------+-------------------------------- 04/20/2014 19:44:27.215557 EDT | 04/20/2014 19:44:27.215557 EDT (1 row) 我想念什么吗?

1
如何获得有效且完整的PostgreSQL数据库备份和测试
我希望我能就如何确保像使用MS SQL Server一样获得完整的Postgres备份获得明确的答案,然后照顾孤立的用户。 从我所读的文章中(可能是错误的),找到一个好的PostgreSQL博客一直是一项艰巨的挑战,因此请随时向我推荐一些博客,我需要弄清楚该应用程序的工作方式,以便我可以信任自己的备份和Slony复制。我有一个开发人员在选择s时通过custom,directory和tarformat 从PgadminIII还原了我的备份,OID但他说其中两个没有加载,tar但只是目录,而不是数据。我现在真的很困惑。 我正在使用PGAdminIII,它具有pg_dump和pg_dumpall选项。我想备份所有需要测试的东西,以便将该数据库还原到某个地方,并确认是的,我们需要的所有数据和备份都正确。最终我想写一个自动恢复脚本,但一次只写一天。 pg_dumpall显然有一个-globals应该备份所有内容的选项,但是的帮助pg_dumpall显示-g, --globals-only dump only global objects, no databases,而不是--globals选项。 我以为pg_dumpall至少会备份外键,但这似乎还是一个“选项”。根据文档,即使pg_dumpall我需要使用一个-o选项来备份外键,我也无法想象我何时不想备份外键,这作为默认选项会更有意义。 我将如何照顾孤立的用户并确认我拥有一切?我想将备份文件实际还原到另一台服务器上,并验证一切正常。如果有人对如何在PostgreSQL中进行真正的备份并还原提出任何建议,我将不胜感激。 我有一台PostgreSQL服务器,但是我仍然无法理解为什么OID默认情况下该应用程序不会备份s!好像有99.9%的时间需要。 更新1: Postgres 文档中提到globals我正在寻找的选项似乎是此版本的默认选项,但仍需要该-o选项。如果有人可以验证或给我一个示例命令,将所有需要的一切还原到其他地方的单个数据库,我将不胜感激。 编辑:被网站要求通过编辑我的问题来显示此问题的独特性。这个问题引起了问题,并弄清了备份中的OID,全局变量和非全局变量之间的差异,以及测试了还原建议以确保备份良好,而不是仅仅备份。根据答案,我能够备份,找出全局变量/ oid,并使用cron作业每晚在Postgres上开始测试还原过程。谢谢您的帮助!

4
视图是否对PostgreSQL的性能有害?
以下是关于数据库设计的书的摘录(数据库设计ISBN:0-7645-7490-6): 使用视图的危险是针对视图过滤查询,期望读取很大表的很小部分。应该在视图内完成所有筛选,因为在视图中的查询完成执行之后,将对视图本身进行任何筛选。视图通常对于加快开发过程很有用,但是从长远来看,它可能会完全破坏数据库性能。 以下是PostgreSQL 9.5文档的摘录: 充分利用视图是良好的SQL数据库设计的关键方面。通过视图,您可以在一致的接口后面封装表结构的详细信息,该表结构的详细信息可能会随着应用程序的发展而变化。 这两个来源似乎相互矛盾(“不使用视图设计”与“不使用视图设计”)。 但是,在PG视图中是使用规则系统实现的。因此,可能(这是我的问题),针对视图的任何筛选都将重写为视图中的筛选器,从而导致针对基础表的单个查询执行。 我的解释正确吗,PG将WHERE子句组合进了视图?还是单独运行它们?有没有简短,自成体系,正确(可编译)的示例?


4
创建的用户无需任何授权即可访问PostgreSQL中的所有数据库
关于设置PostgreSQL,我一定会有所遗漏。我想做的是创建多个彼此隔离的数据库和用户,以便特定用户只能访问我指定的数据库。但是,根据我的判断,任何创建的用户都可以访问所有数据库,而无需给予任何特定的授权。 这是我在Ubuntu Server 12.04上执行的操作: apt-get安装postgresql sudo -u postgres createuser -DRSP mike1(指定新用户的密码) 须藤-u postgres createdb data1 psql -h localhost -U mike1 data1(指定用户mike1登录的密码) 似乎新用户“ mike1”可以毫无问题地连接到数据库“ data1”并创建表等。而且这根本不需要运行任何GRANT命令(而“ data1”的所有者是“ postgres”,因为我没有指定步骤3中的所有者)。这真的应该是这样吗? 我想做的就是授予mike1对data1的完全访问权限,然后对更多的用户和数据库重复此操作,以确保用户只能访问我选择的一个(或可能多个)数据库。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.