问题标签 [postgresql-11]

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 投票
1 回答
4357 浏览

postgresql - PostgreSQL 负整数溢出

我正在使用 tinyint 扩展对 Postgres 进行一些测试时,遇到了一些关于其范围的令人惊讶的事情。打字select -128::tinyint时,它给了我一条ERROR: tinyint out of range消息,这根本不是我所期望的。

假设负数应该比正最大值(单字节整数为 127)大 1(或小于)我认为这是扩展的错误,但是在尝试使用非扩展数字时,我发现完全相同的事情是正在发生。

select -32768::smallint-> 超出范围

select -2147483648::integer-> 超出范围

select -9223372036854775808::bigint-> 超出范围

参考数字数据类型文档(https://www.postgresql.org/docs/current/datatype-numeric.html)这些数字应该都是可能的 - 所有负数都少一-32767,工作正常-2147483647-9223372036854775807所以我很好奇为什么会发生这种情况,或者这甚至会发生在其他人的副本中。

我尝试在 ubuntu 16.x 桌面上同时使用 postgresql 10 和 postgresql 11。

0 投票
1 回答
50 浏览

postgresql - ALTER ROLE SET 设置位置

我一直在阅读有关设置 PG 参数的文档。我了解 and 的行为postgresql.confpostgresql.auto.conf尤其是对于这些集群范围默认值ALTER SYSTEM的变体和要求。SUPERUSER

我最近遇到了ALTER ROLE SET允许普通用户设置 USER 上下文设置并将它们持久化(更改首先在下次登录时看到并且仅在登录时更新)。这些值正确地没有出现在上述.conf文件中 - 但它们必须保存在某个地方,因为它们会持续到未来的会话中。pg_settings确实反映了登录后设置列中的更改,但源仍然是用户,因此无法判断它来自 ROLE 上的持久值,而不是某些会话持续时间设置。

这些ALTER ROLE SET值保存在哪里?如果ALTER ROLE SET执行,是否保证如果服务器重新启动或 PITR'd 保持此更改?为什么来源不反映诸如“角色”之类的区分?

0 投票
0 回答
3620 浏览

sql - PostgreSQL 当前服务器名称

我需要获取 pgAdmin 上列出的服务器名称,而不是主机名或 IP 地址,而是 pgAdmin 上显示的真实服务器名称,一个主机可以包含多个服务器,所以我不想要inet_server_addr(),我可能需要写一些东西plpythonu 喜欢:

或者 PLPGSQL 或任何其他语言上的任何代码都可以。在 pgAdmin 上,您可以通过右键单击服务器然后属性来获取服务器名称:

pgAdmin 快捷方式

那么 pgAdmin 是如何以及从哪里得到这个名字的呢?

拥有整个服务器列表也会很好。

0 投票
2 回答
944 浏览

postgresql - PostgreSQL 11 中的逻辑复制和声明式分区

我有一个transactions包含 2 亿行的常规表。

我决定使用逻辑复制将此表转换为声明性分区。

我在 node1 上创建了一个出版物,如下所示:

当我尝试在 node2 上创建订阅时,如下所示:

返回此错误:

是否可以使用逻辑复制将常规表复制到声明性分区表?

0 投票
1 回答
86 浏览

foreign-keys - 如何在表中使用多个分层分隔的 FK?

我有两个以 1:M 关系相互关联的表:parentchild. 通过使用外键约束,我已将表中的parent_id列限制为child仅匹配 表 id 值。parent现在我想要第三个表 - 称为another_table- 有两个引用和表中的id列的FK 列。parentchild

如何child_id将第三个表中的 FK 列限制为child表中与值匹配的parent_id值?

在此处输入图像描述

编辑


EG:正如我上面提到的,我有三个表 -parent和。他们的内容如下所示:childanother_table

在此处输入图像描述

我想在数据库结构中找到一种方法(同时),以防止在第三个表的child_id列中插入或更新不符合child表数据的值。

0 投票
1 回答
136 浏览

postgresql - 在 plpgsql 中包含 IF.. ELSE 条件并生成动态查询

大家好,我有 2 个表 dcrhd(保存当前数据)和 dcrhd_arc(保存历史数据),我创建了一个函数来从这些表中获取一些数据。但是这个函数只满足我的一半要求(它检查来自 dcrhd 的数据仅限表)我将在这里分享我的功能..

我的要求是我只想添加一个名为的新参数'fin_year_flag' 并相应地选择主表(例如,if fin_year_flag='current' 然后转到dcrhdelse gotodcrhd_arc我可以实现这个吗???你们可以分享你的想法吗???还有其他的吗?完全满足我的要求的方法??我是 PostgreSQL 新手,在互联网上搜索了很多次,但找不到任何有用的东西。

0 投票
1 回答
6291 浏览

stored-procedures - 我可以使用 postgres JDBC 驱动程序从 java 调用 postgres“过程”(而不是“函数”)吗?

我是 postgres 的新手,但我试图在 Postgres 11 中调用一个过程(新的“过程”而不是“函数”),从 java 作为 spring SimpleJDBCCall 调用(使用 Postgresql-42.2.5 jdbc 驱动程序)。但是,当我执行该过程时,我遇到了以下异常:

org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; 糟糕的 SQL 语法 [{call pa_test_schema.pr_dosomething(?)}]; 嵌套异常是 org.postgresql.util.PSQLException:错误:pa_test_schema.pr_dosomething(bigint) 是一个过程 提示:要调用一个过程,请使用 CALL。位置:在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) 在 org.springframework.jdbc.support 的 org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101) 的第 15 位。 AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:

我的程序代码:

我的java代码:

当我单步执行代码时,我可以看到驱动程序正在将可调用语句的 sql 修改为调用 postgres 函数所需的语法:

从 pa_test_schema.pr_dosomething(?) 中选择 * 作为结果

这是执行此转换的驱动程序中的方法: https ://github.com/pgjdbc/pgjdbc/blob/faab499853c56f67cb70fb242f75b918452f2a6f/pgjdbc/src/main/java/org/postgresql/core/Parser.java#L766

我了解过程仅在 Postgres 11 中引入(以前会使用返回 void 的函数),并且已阅读 postgres 驱动程序文档,但没有看到对调用过程而不是函数的任何引用。

这是否意味着当前的 postgres 驱动程序尚不支持此功能,还是我应该使用另一种方法?我应该只使用 postgres 函数吗?

0 投票
1 回答
3145 浏览

database - PostgresSQL/pgAdmin4/dump 服务器版本不匹配

我尝试在 pgAdmin4 中使用 Postgres 11.1 进行备份,但失败了。pgadmin 显示了一个窗口

状态:失败(退出代码:1)。

pg_dump:服务器版本:11.1;pg_dump:10.5

pg_dump:由于服务器不匹配而中止

我真的不明白。pgadmin4 不知道我使用的是 11.1 而不是 10.5?

问题已解决 - 在我的情况下。

pgadmin < 首选项 < 路径 < 二进制路径

PostgreSQL 二进制路径自动设置为$DIR/../runtime

我将路径更改为已安装的 PostgreSQL 版本C:\Program Files\PostgreSQL\11\bin

0 投票
1 回答
5822 浏览

postgresql - Postgresql 11 根据外键关系中主表中的列对详细表进行分区

版本 11 中对基于范围的声明性分区的改进似乎真的适用于我的用例,但我不完全确定外键如何与分区一起使用。

我有表格Files -< Segments -< Entries,其中每个文件有数百个段,每个段有数百个条目,因此条目大约是文件大小的 10,000 倍。文件有一个 CreationDate 字段,客户将定义一个保留期,以便他们删除旧条目。所有这些都清楚地指向基于日期的分区,因此首先查询最新条目更快,并且容易删除旧条目。

我遇到的第一个问题是,当我尝试创建 Files 表时,听起来我必须将 createdDate 作为主键的一部分包含在 RANGE 分区中:

如果我从 FileId 的定义中删除“PRIMARY KEY”,我不会收到错误消息,但这会影响子查找的效率吗?

我也不知道如何为子表声明分区。PARTITION BY RANGE (Files.createdDate)不起作用。

由于仅在版本 11 中甚至可以使用此用例,因此我没有找到太多有关它的信息,并且希望有任何指示!谢谢!

0 投票
1 回答
42 浏览

postgresql-11 - 错误:运算符不存在:字符 <> 整数

非常感谢任何帮助 - 尝试将数据插入到我的数据库中的表中时遇到问题。

我收到以下错误:

在我遇到这个问题之前,所有其他表格插入都可以处理现在的问题......对程序不够熟悉以理解错误......我已经尝试了很多尝试和代码更改。任何帮助深表感谢。谢谢你。