问题标签 [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.
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。
postgresql - ALTER ROLE SET 设置位置
我一直在阅读有关设置 PG 参数的文档。我了解 and 的行为postgresql.conf
,postgresql.auto.conf
尤其是对于这些集群范围默认值ALTER SYSTEM
的变体和要求。SUPERUSER
我最近遇到了ALTER ROLE SET
允许普通用户设置 USER 上下文设置并将它们持久化(更改首先在下次登录时看到并且仅在登录时更新)。这些值正确地没有出现在上述.conf
文件中 - 但它们必须保存在某个地方,因为它们会持续到未来的会话中。pg_settings
确实反映了登录后设置列中的更改,但源仍然是用户,因此无法判断它来自 ROLE 上的持久值,而不是某些会话持续时间设置。
这些ALTER ROLE SET
值保存在哪里?如果ALTER ROLE SET
执行,是否保证如果服务器重新启动或 PITR'd 保持此更改?为什么来源不反映诸如“角色”之类的区分?
postgresql - PostgreSQL 11 中的逻辑复制和声明式分区
我有一个transactions
包含 2 亿行的常规表。
我决定使用逻辑复制将此表转换为声明性分区。
我在 node1 上创建了一个出版物,如下所示:
当我尝试在 node2 上创建订阅时,如下所示:
返回此错误:
是否可以使用逻辑复制将常规表复制到声明性分区表?
foreign-keys - 如何在表中使用多个分层分隔的 FK?
我有两个以 1:M 关系相互关联的表:parent
和child
. 通过使用外键约束,我已将表中的parent_id
列限制为child
仅匹配 表 id 值。parent
现在我想要第三个表 - 称为another_table
- 有两个引用和表中的id
列的FK 列。parent
child
如何child_id
将第三个表中的 FK 列限制为child
表中与值匹配的parent_id
值?
编辑
EG:正如我上面提到的,我有三个表 -parent
和。他们的内容如下所示:child
another_table
我想在数据库结构中找到一种方法(同时),以防止在第三个表的child_id
列中插入或更新不符合child
表数据的值。
postgresql - 在 plpgsql 中包含 IF.. ELSE 条件并生成动态查询
大家好,我有 2 个表 dcrhd(保存当前数据)和 dcrhd_arc(保存历史数据),我创建了一个函数来从这些表中获取一些数据。但是这个函数只满足我的一半要求(它检查来自 dcrhd 的数据仅限表)我将在这里分享我的功能..
我的要求是我只想添加一个名为的新参数'fin_year_flag'
并相应地选择主表(例如,if fin_year_flag='current'
然后转到dcrhd
else gotodcrhd_arc
我可以实现这个吗???你们可以分享你的想法吗???还有其他的吗?完全满足我的要求的方法??我是 PostgreSQL 新手,在互联网上搜索了很多次,但找不到任何有用的东西。
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 函数吗?
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
postgresql - Postgresql 11 根据外键关系中主表中的列对详细表进行分区
版本 11 中对基于范围的声明性分区的改进似乎真的适用于我的用例,但我不完全确定外键如何与分区一起使用。
我有表格Files -< Segments -< Entries
,其中每个文件有数百个段,每个段有数百个条目,因此条目大约是文件大小的 10,000 倍。文件有一个 CreationDate 字段,客户将定义一个保留期,以便他们删除旧条目。所有这些都清楚地指向基于日期的分区,因此首先查询最新条目更快,并且容易删除旧条目。
我遇到的第一个问题是,当我尝试创建 Files 表时,听起来我必须将 createdDate 作为主键的一部分包含在 RANGE 分区中:
如果我从 FileId 的定义中删除“PRIMARY KEY”,我不会收到错误消息,但这会影响子查找的效率吗?
我也不知道如何为子表声明分区。PARTITION BY RANGE (Files.createdDate)
不起作用。
由于仅在版本 11 中甚至可以使用此用例,因此我没有找到太多有关它的信息,并且希望有任何指示!谢谢!
postgresql-11 - 错误:运算符不存在:字符 <> 整数
非常感谢任何帮助 - 尝试将数据插入到我的数据库中的表中时遇到问题。
我收到以下错误:
在我遇到这个问题之前,所有其他表格插入都可以处理现在的问题......对程序不够熟悉以理解错误......我已经尝试了很多尝试和代码更改。任何帮助深表感谢。谢谢你。