问题标签 [postgresql-13]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
60 浏览

sql - 测试 ARRAY 是否包含给定 ARRAY 的 ALL 或 NO 元素

假设我们有一个数组:

使用运算符 <@ 我可以查询左操作数是否是右操作数的子数组:

上面的方法很有效,但现在让我们看下面的例子:

在这种情况下,上面将按预期返回 false。

我们是否有一个操作员说以下内容:

  • 左数组包含在右数组中
  • 或者左数组中的每个元素根本不包含在右数组中?

到今天为止,我可以很容易地想出一个涉及重叠运算符的解决方案,但这并不是我真正想要的。它极大地复杂了我的查询,我需要在应用程序端做一些更复杂的字符串机制来构建查询。

我正在使用 PostgreSQL 13。

0 投票
1 回答
563 浏览

postgresql - 预测 Postgres 哈希分区的分区号

我正在编写一个在 Postgres DB 中使用分区的应用程序。这将发送给客户并在他们的服务器上运行。这意味着我必须为许多不同的场景做好准备。让我们从简单的表模式开始:

我想按 volume_id 列对该表进行分区。

我想达到的目标:

  • 分区数量有限(现在是 500,但我稍后会调整这个参数)
  • 不要一次创建所有分区 - 仅在需要时添加它们
  • 支持最大 100K 的卷 ID
  • [很高兴] - 人类能够根据 volume_id 计算分区号

我现在的解决方案:

  • 按 LIST 分区
  • 每个分区的处理volume_id % 500方式如下: CREATE TABLE dir_part_1 PARTITION OF dir FOR VALUES IN (1, 501, 1001, 1501, ..., 9501);

这很好用,因为我可以在需要时创建分区,并且我确切地知道给定的 volume_id 属于哪个分区。但是我必须手动声明数字并且我不能支持高volume_ids,因为插入语句的速度急剧下降(超过2倍)。

看起来我可以尝试 HASH 分区,但我最大的担心是我必须在一开始就创建所有分区,并且我希望能够在需要时动态创建它们,因为计划时间显着增加高达 5 秒500 个分区。例如,我知道我将添加带有volume_id=5. 如何判断应该创建哪个分区?

0 投票
0 回答
125 浏览

java - 为什么没有执行 SQL 查询并且没有使用 postgresql 创建表 spring boot crud rest api 项目?

我正在使用 postgresql 和 spring data jpa 运行 spring boot crud rest api。

应用程序启动正常,但我没有执行任何 SQL - 没有创建表,并且在控制台上没有显示任何错误。这是我的 pom.xml 、存储库、应用程序属性和实体文件。

Pom.xml 文件

EmployeeRepository.java

雇员.java

Application.properties 文件

0 投票
0 回答
354 浏览

postgresql - Neo-4j ETL 工具不会连接到本地 postgres 服务器。org.postgresql.util.PSQLException:不支持身份验证类型 10

我正在使用 Neo4j 版本 1.4.1 和 PostgresSQL 13 和 PgAdmin 4.30。我最近安装了 PostgreSQL 13,在此之前我有 PostgreSQL 12 和 PgAdmin 4.24,当这个 ETL 导入工作有效时。

但是现在,在删除 PostgreSQL 12 之后,我尝试使用 neo4j ETL 工具将本地 postgres 数据库导入 Neo-4j。

我的输入连接详细信息:

Host= localhost
Port= 5432
Database= mydatabasename
Connection URL= jdbc:postgresql://localhost:5432/ mydatabasename Username= myUsername password="mypassword"

但是当我单击“测试并保存连接”按钮时,它会显示此错误:

2021 年 1 月 30 日上午 1:10:43 org.postgresql.Driver 连接严重:连接错误:org.postgresql.util.PSQLException:不支持身份验证类型 10。检查您是否已将 pg_hba.conf 文件配置为包含客户端的 IP 地址或子网,并且它正在使用驱动程序支持的身份验证方案。在 org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:614) 在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:222) 在 org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory .java:49) 在 org.postgresql.jdbc.PgConnection.(PgConnection.java:194) 在 org.postgresql.Driver.makeConnection(Driver.java:431) 在 org.postgresql.Driver.connect(Driver.java:247) ) 在 java.sql.DriverManager.getConnection(DriverManager.java:

连接失败。SQL 状态:08004,消息:不支持身份验证类型 10。检查您是否已将 pg_hba.conf 文件配置为包含客户端的 IP 地址或子网,并且它正在使用驱动程序支持的身份验证方案。

由于不支持身份验证类型 10,我接受了这篇文章 Unable to connect to Postgress DB 的帮助。我尝试更改我的pg_hba.conf设置并将方法设置为 md5:

本地所有所有 md5

我还像这样配置了我的postgresql.conf

listen_addresses = '*' 端口 = 5432 max_connections = 100 password_encryption = md5

但没有任何效果。我什至尝试重新安装 PostgreSQL 13 和 PgAdmin 4.30。

我下载了最新的 JDBC 版本并尝试使用该 postgresql-42.2.18.jre7 进行连接,但同样的错误。当我使用Java程序连接到这个数据库时,连接成功。

输出:成功打开数据库

(我正在为这个程序使用下载的 postgresql-42.2.18.jre7。)

编辑:我安装了 PostgreSQL 12,它解决了这个问题。当我使用 Neo4j 连接到 PostgreSQL 13 时,错误仍然存​​在。

0 投票
1 回答
266 浏览

asp.net-identity - 如何使用 dotnet-ef 创建用于 ASP.NET Core 的 Postgres 身份数据库?

经过大量研究和反复试验,这是我发现可行的步骤:

环境

  • 视窗 10
  • Postgres 13
  • ASP.NET 核心 5

创建步骤:

  1. 在 Postgress 13 上创建身份数据库。
  2. GRANT ALL ON DATABASE dbname TO user;
  3. 使用个人授权创建一个面向 .NET 5 (net5.0) 的 ASP.NET Core 项目。
  4. 将连接字符串添加到appsetting.json文件中。
  5. 添加<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.2" />到 .csproj 文件。
  6. 如果包退出以使用 Sqlite - 将其删除。
  7. 重建解决方案。
  8. 在 Startup.cs 中,更改.UsingSqlServer,Npgsql.
  9. 保存并重建。
  10. 在开发人员 PowerShell 中运行:
  11. dotnet-ef migrations remove如果没有错误,则运行:
  12. dotnet-ef migrations add InitialIdent如果没有错误运行:
  13. 'dotnet-ef' 数据库更新`

现在您的 Postgres 数据库中应该有身份表。

0 投票
2 回答
103 浏览

postgresql - PostgreSQL 慢命令

我在 PostgreSQL 13.1 上有表(超过 1 亿条记录)

索引(为了测试我创建了它们):

所以,我的问题是为什么查询像

非常慢(~10 秒)。但是没有订单语句的查询很快(毫秒)。

解释:

0 投票
1 回答
381 浏览

postgresql-13 - 将 postgres pod 版本 12 更新到 13 时出现问题

我有一个运行应用程序的 Kubernetes 集群。集群的一部分是一个 postgresql pod,当前运行版本 12.4。不幸的是,我发现我需要升级 postgresql 版本 13。在这里我删除了版本 12 的 pod,然后使用新的图像版本 13 创建了一个新的 postgres pod。而 pod create 出现错误(数据目录由 PostgreSQL 版本初始化12,与此版本 13.1 (Debian 13.1-1.pgdg100+1) 不兼容,谁能帮我解决这个问题。

0 投票
1 回答
53 浏览

ubuntu - 无法使用 Ubuntu 20 中的终端连接到 Postgresql

我正在使用 postgresql 13。当我输入 psql 时,我得到了这个:

我安装它使用

systemctl status 给出了这个

好像没问题。

0 投票
3 回答
3012 浏览

postgresql - 将 postgresql 本地复制到远程数据库(都带有密码) - 错误:无法识别选项“区域设置”

使用 Postgres 12 / Windows 10。

尝试使用以下命令将远程数据库复制到 localhost:

pg_dump -C -h remotehost -p 5432 -U postgres remotedb | psql -h localhost -p 5432 -U postgres localdb

CMD 请求密码 2x。

Password for user postgres: Password:

我先输入localhost,回车,然后输入remotehost,再回车。

这是我得到的错误回报:

  • 如何解决第一个错误“无法识别选项“区域设置””?
  • 第二个错误与我输入密码的方式有关吗?当两个数据库都要求输入密码时,我应该如何工作?
0 投票
1 回答
29 浏览

sql - PostgreSQL:`VIEW` 不返回具有`SPLIT_PART()` 列的行

问题描述:

大家好,我在查询 VIEW 时遇到了一些麻烦,其列部分是SPLIT_PART()og 表列上的函数结果;我按如下方式创建了 VIEW:

我的意图是将包含与客户住所相关的所有信息的结构化属性(Clients.Address定义为字符串)分成几列以单独查询(例如或)。VARCHAR(255)SELECT FirstName, LastName FROM ClientAddressList WHERE City LIKE 'N%';SELECT Client_ID FROM ClientAddressList WHERE PostalCode = '82305';

我的经历:

Clients 表包含一个测试行:

Client_ID 居住地址 城市 邮政编码
00451 埃齐奥 奥迪托雷 Via dei Banchi 45 - 佛罗伦萨 - 50123 - 佛罗伦萨 佛罗伦萨 50123 佛罗伦萨

所以我VIEW有这一行:

Client_ID 居住地址 城市 邮政编码
00451 埃齐奥 奥迪托雷 Via dei Banchi 45 佛罗伦萨 50123 佛罗伦萨

我试过了:

它不返回任何结果:

Client_ID 居住地址 城市 邮政编码

但是,如果我查询不是SPLIT_PART()它的结果的列:

Client_ID 城市
00451 埃齐奥 奥迪托雷 佛罗伦萨

我的期望:

即使在结果列上,我也会WHERE从句工作并返回值:SPLIT_PART()

Client_ID
00451

有人可以解释一下可能是什么问题吗?太感谢了!