问题标签 [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.
sql - 测试 ARRAY 是否包含给定 ARRAY 的 ALL 或 NO 元素
假设我们有一个数组:
使用运算符 <@ 我可以查询左操作数是否是右操作数的子数组:
上面的方法很有效,但现在让我们看下面的例子:
在这种情况下,上面将按预期返回 false。
我们是否有一个操作员说以下内容:
- 左数组包含在右数组中
- 或者左数组中的每个元素根本不包含在右数组中?
到今天为止,我可以很容易地想出一个涉及重叠运算符的解决方案,但这并不是我真正想要的。它极大地复杂了我的查询,我需要在应用程序端做一些更复杂的字符串机制来构建查询。
我正在使用 PostgreSQL 13。
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
. 如何判断应该创建哪个分区?
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 文件
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 时,错误仍然存在。
asp.net-identity - 如何使用 dotnet-ef 创建用于 ASP.NET Core 的 Postgres 身份数据库?
经过大量研究和反复试验,这是我发现可行的步骤:
环境:
- 视窗 10
- Postgres 13
- ASP.NET 核心 5
创建步骤:
- 在 Postgress 13 上创建身份数据库。
GRANT ALL ON DATABASE dbname TO user;
- 使用个人授权创建一个面向 .NET 5 (net5.0) 的 ASP.NET Core 项目。
- 将连接字符串添加到
appsetting.json
文件中。 - 添加
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.2" />
到 .csproj 文件。 - 如果包退出以使用 Sqlite - 将其删除。
- 重建解决方案。
- 在 Startup.cs 中,更改
.UsingSqlServer
为,Npgsql
. - 保存并重建。
- 在开发人员 PowerShell 中运行:
dotnet-ef migrations remove
如果没有错误,则运行:dotnet-ef migrations add InitialIdent
如果没有错误运行:- 'dotnet-ef' 数据库更新`
现在您的 Postgres 数据库中应该有身份表。
postgresql - PostgreSQL 慢命令
我在 PostgreSQL 13.1 上有表(超过 1 亿条记录)
索引(为了测试我创建了它们):
所以,我的问题是为什么查询像
非常慢(~10 秒)。但是没有订单语句的查询很快(毫秒)。
解释:
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) 不兼容,谁能帮我解决这个问题。
ubuntu - 无法使用 Ubuntu 20 中的终端连接到 Postgresql
我正在使用 postgresql 13。当我输入 psql 时,我得到了这个:
我安装它使用
systemctl status 给出了这个
好像没问题。
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,再回车。
这是我得到的错误回报:
- 如何解决第一个错误“无法识别选项“区域设置””?
- 第二个错误与我输入密码的方式有关吗?当两个数据库都要求输入密码时,我应该如何工作?
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 |
有人可以解释一下可能是什么问题吗?太感谢了!