标签: postgresql-14

在分区表上同时创建索引

我正在使用 postgresql 14.1,并且我使用某些表的分区重新创建了实时数据库。

因为我这样做了,所以我可以在服务器不活动时创建索引,但是当服务器活动时我只能创建 usingconcurrently但不幸的是,当我尝试同时创建索引时,我收到错误。

运行这个:

create index concurrently foo  on foo_table(col1,col2,col3));
Run Code Online (Sandbox Code Playgroud)

提供错误:

ERROR:  cannot create index on partitioned table "foo_table" concurrently
Run Code Online (Sandbox Code Playgroud)

现在它是一个实时服务器,我无法同时创建索引,我需要创建一些索引以提高性能。有什么想法怎么办?

谢谢

postgresql indexing postgresql-14

12
推荐指数
2
解决办法
7125
查看次数

Filtering in count function - Postgresql

I have the following query which gives me the amount of referrals users have. However, I would like to only count the referral if the referred user has activated the premium plan. How could this be achieved?

Dbfiddle here.

I am using PostgreSQL version 14.

SELECT users.id, users.email, users.premium,
COUNT(referrals.referrer) as referred
FROM users
LEFT JOIN referrals
ON users.id = referrals.referrer
GROUP BY users.id
ORDER BY referred DESC;
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-14

9
推荐指数
1
解决办法
1万
查看次数

Mac 上的 Postgres 服务器错误 [不允许“root”执行 PostgreSQL 服务器。服务器必须在非特权用户 ID 下启动]

有人能帮我解决过去几个小时一直困扰我的问题吗?到目前为止,我已尝试了所有建议的解决方案,但似乎找不到任何有效的方法。

错误:

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise.  See the documentation for
more information on how to properly start the server.
Run Code Online (Sandbox Code Playgroud)

我将永远感激任何帮助我解决这个问题的人。

homebrew macos-monterey postgresql-14

7
推荐指数
1
解决办法
3383
查看次数

docker postgressql启动包长度无效

PostgreSQL init process complete; ready for start up.

2022-05-16 19:28:51.674 UTC [1] LOG:  starting PostgreSQL 14.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027, 64-bit
2022-05-16 19:28:51.674 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-05-16 19:28:51.674 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2022-05-16 19:28:51.677 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-05-16 19:28:51.681 UTC [51] LOG:  database system was shut down at 2022-05-16 19:28:51 UTC
2022-05-16 19:28:51.684 UTC [1] LOG:  database …
Run Code Online (Sandbox Code Playgroud)

postgresql docker docker-compose postgresql-14

5
推荐指数
1
解决办法
2万
查看次数

PgAdmin 4 在 Mac 操作系统上意外退出

我使用的是M2 Mac Pro 14,并分别通过 Brew和 pgAdmin4 网站重新安装了PostgreSQL。但是,我遇到了无法打开 PgAdmin 4 的问题;它不断显示“ pgAdmin 意外完成”错误。以前,它工作正常,直到我卸载它。我不确定这个问题背后的原因。

这是错误报告的一部分

进程:pgAdmin 4 [2293]
路径:/Applications/pgAdmin 4.app/Contents/MacOS/pgAdmin 4
标识符:org.pgadmin.pgadmin4
版本:7.5 (4280.88)
代码类型:X86-64(已翻译)父进程:launchd [ 1]

日期/时间:2023-08-23
操作系统版本:macOS 13.2.1 (22D68)
报告版本:12

自启动后唤醒时间:5500 秒
自唤醒以来的时间:370 秒

系统完整性保护:已启用

崩溃线程:0 CrBrowserMain 调度队列:com.apple.main-thread

异常类型:EXC_BAD_ACCESS (SIGSEGV)
异常代码:KERN_INVALID_ADDRESS 位于 0x0000000000000020
异常代码:0x0000000000000001、0x0000000000000020

终止原因:命名空间信号,代码 11 分段错误:11
终止进程:exc 处理程序 [2293]

VM 区域信息:0x20 不位于任何区域。以下区域之前的字节:140723125682144

区域类型 开始 - 结束 [VSIZE] PRT/MAX SHRMOD 区域详细信息 开始时未使用的空间

以下是我到目前为止所采取的步骤:

  1. 使用 Brew 卸载。

  2. 从“/Library”目录中删除了“pgAdmin”和“PostgreSQL 14”文件夹。

  3. 从“目录实用程序”中删除了“PostgreSQL 14”和“PostgreSQL 服务器”。(我这样做是因为当我尝试在 Mac 上添加新用户帐户时,每次添加“postgres”时,Mac OS 都会说我已经有了该帐户,但我还没有)

  4. 使用官方网站上的 …

macos terminal pgadmin pgadmin-4 postgresql-14

5
推荐指数
1
解决办法
6742
查看次数

PostgreSQL 中高效的全文搜索,在另一列上排序

在 PostgreSQL 中,如何有效地对一列进行全文搜索,对另一列进行排序?

假设我有一个tbl包含列abc、 ... 和许多(> 一百万)行的表。我想对列进行全文搜索,a并按其他列对结果进行排序。

所以我va从 column创建一个 tsvector a

ALTER TABLE tbl
ADD COLUMN va tsvector GENERATED ALWAYS AS (to_tsvector('english', a)) STORED;
Run Code Online (Sandbox Code Playgroud)

iva为其创建一个索引,

CREATE INDEX iva ON tbl USING GIN (va);
Run Code Online (Sandbox Code Playgroud)

ib和列的索引b

CREATE INDEX ib ON tbl (b);
Run Code Online (Sandbox Code Playgroud)

然后我查询像

SELECT * FROM tbl WHERE va @@ to_tsquery('english', 'test') ORDER BY b LIMIT 100
Run Code Online (Sandbox Code Playgroud)

现在 Postgres 明显的执行策略是:

  1. 对于频繁出现的单词,使用 进行索引扫描ib,过滤va …

postgresql full-text-search query-optimization postgresql-13 postgresql-14

4
推荐指数
1
解决办法
3698
查看次数

postgreSQL 用户密码验证失败

我正在学习完整的 WebDev 课程,并且在这个问题上遇到了很大的困难。我已经为 Windows 10 安装了 postgreSQL 14.2,讲师说 pgAdmin4 会一起安装,但事实并非如此,所以我单独安装了 pgAdmin4。我已经设置了所有内容并创建了一个测试数据库(称为“test”),还有一个表,所有内容都通过 Windows Powershell 命令行按照课程说明进行。现在,当我尝试通过 PowerShell 命令访问此数据库psql 'test'并输入操作系统用户请求的密码时,我收到致命错误,如下所示:

PS C:\Users\theu_\desktop> psql 'test'
Password for user theu_:
psql: error: connection to server at "localhost" (::1), port 5432 failed: FATAL:  password authentication failed for user "theu_"
Run Code Online (Sandbox Code Playgroud)

我已经尝试过我的操作系统用户名密码和 postgreSQL 密码,但都不起作用。我错过了什么或做错了什么?

提前致谢

windows-10 pgadmin-4 postgresql-14

3
推荐指数
1
解决办法
7350
查看次数

Postgres 生成的列不是不可变的

我正在向表中添加一些列,并且想要一个将它们组合在一起的生成列,我将使用它作为唯一索引。当我尝试添加列时,出现错误ERROR: generation expression is not immutable

我遵循了这个问题的解决方案,并且专门使用CASE||进行字符串连接,这应该是immutable.

ALTER TABLE tag
  ADD COLUMN prefix VARCHAR(4) NOT NULL,
  ADD COLUMN middle BIGINT NOT NULL,
  ADD COLUMN postfix VARCHAR(4), -- nullable
  -- VARCHAR size is 4 prefix + 19 middle + 4 postfix + 2 delimiter
  ADD COLUMN tag_id VARCHAR(29) NOT NULL GENERATED ALWAYS AS
    (CASE WHEN postfix IS NULL THEN prefix || '-' || middle
          ELSE prefix || '-' || middle || '-' …
Run Code Online (Sandbox Code Playgroud)

postgresql generated-columns postgresql-14

3
推荐指数
1
解决办法
615
查看次数

在 Windows 10 上使用 createdb 命令 postgresql 时出错

我是 PostgreSQL 的新用户,我正在学习它,以便可以将它与 Django 一起使用,因此我尝试使用该createdb命令创建一个新数据库,但即使我输入了正确的帐户密码,我我收到这个错误。我重新安装了所有内容并检查了我能想到的所有内容,但无法解决此错误。因此,如果我能就这个问题获得一些帮助,那就太好了。

即使使用命令psql并提交正确的密码,也会出现相同的错误。

我使用的是 Windows 10。

据我检查,我需要输入安装 PostgreSQL 时使用的密码。

顺便说一句,我使用的是最新版本的 PostgreSQL 14.1

我使用的命令:

createdb testdatabase 

createdb: error: connection to server at "localhost" (::1), port 5432 failed:
FATAL:  password authentication failed for user "<username_placeholder>"
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-14

2
推荐指数
1
解决办法
1601
查看次数

如何删除重复行并保留一行多列

我在一个名为的表中有重复的数据bank_currency,如下所示:

currencyid | bankid
--------------------
8             1
8             1
8             1
16            2
16            2
16            2
14            3
14            3
14            3
Run Code Online (Sandbox Code Playgroud)

我不知道为什么数据被重复一式三份,但我需要删除所有重复项并仅保留每行之一。所以我最终是这样的:

currencyid | bankid
--------------------
8             1
16            2
14            3
Run Code Online (Sandbox Code Playgroud)

我无法ORDER BY或告诉 postgresql 要保留哪一行,因为它们是重复的bankidcurrencyid也许是一个订单ROW_NUMBER(如果可能的话)并保持最低ROW_NUMBER?任何建议都非常感激。

postgresql postgresql-14

2
推荐指数
1
解决办法
3188
查看次数