问题标签 [postgres-9.6]

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 回答
326 浏览

sql - postgres 中的 regexp_replace 只保留需要的单个空格

我想要的是像这样转动一个字符串;

10 - 15 st. pan,cras

10 - 15 ST PANCRAS

我得到了大部分的方式

但我似乎无法删除数字周围的双空格。我试过了,在表达式中添加了一个额外的空格;

但结果没有区别。我正在使用regexp_replace,因为我发现substring语法更难遵循。9.6 字符串存储在text

0 投票
2 回答
1828 浏览

java - PostgreSQL 9.6 DATE column mapping using Hibernate 5+ in Java 8

Let's consider a simple Postgres database with only one table and one column, that is of type DATE, i.e.:

From the Hibernate documentation regarding basic types and PostgresSQL documentation regarding using Java 8 Date and Time classes, I can clearly see that I should be able to map that table like this:

quite easily, without a need to write @Temporal or any stuff alike. From the Hibernate documentation I can read:

Because the mapping between Java 8 Date/Time classes and the SQL types is implicit, there is not need to specify the @Temporal annotation. Setting it on the java.time classes throws the following exception: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property

However, I'm getting an error

In my pom.xml file I've got:

and since I'm also using Spring Boot, in application.properties I've got

Am I wrong about documentation? Should I write a Converter or is there any other way?

EDIT
Currently my pom.xml file looks like this:

and now I'm getting:

0 投票
2 回答
259 浏览

bash - PostgreSQL 数据库如何在两个连续的 shell 命令之间停止存在?

我正在尝试accounts_db在 CI(GitLab CI,如果相关)中创建一个 PostgreSQL 数据库,但前提是该数据库尚不存在。由于本机 Postgres 不支持,我目前通过使用 psql 运行 a SELECTon来解决它pg_database,并且只有当它不返回结果时,我才再次使用 psql 运行 a CREATE DATABASE

这在大多数情况下都有效:accounts_db已经存在,因此grep成功退出并且CREATE DATABASE不执行。

不过,大多数时候并非总是如此。出于某种原因,它有时会出现在 的第二部分||,只是因为数据库已经存在而出错:

这怎么可能?

0 投票
1 回答
322 浏览

windows - 每次在 Windows 8/10 但不是 7 上调用静态链接函数崩溃

问题 :

我已经构建了生成二进制文件的https://github.com/reorg/pg_repack项目。这个二进制文件与 postgres 9.6 redistributable 相关联(我使用那些由 EntrepriseDb 提供的)。在 Windows 7 上一切正常。在构建期间或运行时我没有问题。但在 Windows 8 或 10 上,应用程序总是会按照以下顺序崩溃。该二进制文件是在 Windows 7 上使用 Visual Studio 2013 从 C 源生成的(我尝试过在 Windows 10 上生成的版本,但它没有改变任何东西),在 x64 系统上,用于 x64 应用程序,优化被禁用和它使用动态基础。为了确保使用正确的二进制文件,我已将所有可再发行二进制文件复制到我的应用程序文件夹中。

Windows 7 上的装配细节(工作案例):

在 main 之后的几行,应用程序调用了函数 set_pglocale_pgservice

内存在 07FF6E4B40520h

(注意:从 0x7FF6E4B40000 到 0x00007FF6E4B40560 内存包含函数地址,mapfile 显示:0002:00000520 __imp_set_pglocale_pgservice postgres:postgres.exe [postgres 可再发行,动态链接])

然后调用qword ptr [__imp_set_pglocale_pgservice(07FF6E4B40520h)]

然后拨打 00000001403F67FA

内存在 1403F8998h

(注意:从 0x00000001403F8000 到 0x00000001403F8F08 内存包含函数地址,mapfile 显示:0002:00000998 ??_C@_04FHBLDJDJ@?1bin?$AA@ libpgport:path.obj [postgres 可再发行,静态链接])

然后跳转到 00007ffe87a5cc60 之后

...一切正常

Windows 10 上的装配细节(非工作案例):

在 main 之后的几行,应用程序调用了函数 set_pglocale_pgservice

内存在 07FF7E9880520h

(注意:从 0x00007FF7E9880000 到 0x00007FF7E9880560 内存包含函数地址,mapfile 显示:0002:00000520 __imp_set_pglocale_pgservice postgres:postgres.exe [postgres 可再发行,动态链接])

然后调用qword ptr [__imp_set_pglocale_pgservice(07FF7E9880520h)]

然后拨打 00000001403F67FA

内存为 1403F8998h (此处应用程序与 Windows 7 不同)

(注意:0x00000001403F8998是函数中间的操作码地址,不是函数地址)

内存在 000000000059e6a2h

然后跳转到 000000000059e6a2 => 崩溃后

Windows 7 上用于加载库的进程监视器详细信息(此处为 libpq.dll):

Windows 10 上的进程监视器详细信息(此处为 libpq.dll)(都与 Windows 7 非常相似,除了库的加载)

注意:我期待类似于 Windows 7 的东西,或者至少类似于:

所以我不知道为什么这个应用程序在 Windows 8 或 10 上有如此奇怪的行为。如果有人有一些解释或想法来修复崩溃,我会很高兴的。如果需要,请不要犹豫,询问一些细节。

0 投票
1 回答
267 浏览

postgresql - 将 Postgres 9.6 继承的表迁移到 TimeScaleDB

我们有一个按继承划分的时间序列表。我们现在希望将其迁移到同一数据库中的 TimeScaleDB。文档说要使用 pg_dump/COPY 或 CREATE with LIKE。我们都无法使用继承的表。我们是否应该将所有继承的表 pg_dump/COPY 到 CSV 文件中,连接然后导入?

0 投票
1 回答
754 浏览

database - postgres 9.6 - jsonb 和索引 - 性能不佳

在一张表(由 django 模型使用)上,我使用 jsonb 列data来存储从 web 服务获取的任意数据:

记录> 1M。

然而,尽管有各种索引策略(遵循这篇博文),性能仍然很差:

我尝试在单个 jsonb key 上删除"rawdata_data_idx"并使用索引,但性能几乎相同:BTreeobject_id

对此有何建议?不确定这是此类任务的平均性能。

0 投票
1 回答
886 浏览

postgres-9.6 - Postgres reltuples 似乎返回两倍的值

我正在使用此查询来获取大约行数。

SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'table_name';

本文推荐使用此方法来获得快速的近似行数:https ://wiki.postgresql.org/wiki/Count_estimate

但有时它似乎给出了两倍的行数。这仅在升级到9.6.8. 它曾经一直工作正常。

当我运行时,问题似乎自行解决ANALYZE table_name。一段时间后,问题又回来了。

我不确定为什么会这样。我该如何解决这个问题?

0 投票
1 回答
841 浏览

postgresql - 如何解决 PostgreSQL“中止(核心转储)”错误?

我正在尝试在 Ubuntu 14.04 上安装 postgreSQL-9.6.4。但是当我运行' initdb '来创建数据库集群时,它会显示错误。

当我运行“ initdb ”时,它显示以下错误:

有什么帮助吗?

0 投票
2 回答
1579 浏览

postgresql - Postgres_FDW 没有推低 WHERE 标准

我正在使用两个 PostgreSQL 9.6 数据库,并尝试使用 postgres_fdw 从另一个数据库中查询一个(一个是具有数据的生产备份数据库,另一个是用于进行各种分析的数据库)。

我遇到了一些奇怪的行为,尽管查询中某些类型的 WHERE 子句没有传递给远程数据库,而是保留在本地数据库中并用于过滤从远程数据库接收到的结果。这导致远程数据库尝试通过网络发送比本地数据库需要更多的信息,并且受影响的查询速度大大降低(15 秒对 15 分钟)。

我经常看到这个与时间戳相关的子句,下面的例子是我第一次遇到这个问题的方式,但我已经在其他几个变体中看到它,例如用 TIMESTAMP 文字(慢)或 TIMESTAMP WITH TIME ZONE 文字替换它(快速地)。

有没有我想念的设置可以帮助解决这个问题?我正在将此设置为一个团队使用混合级别的 SQL 背景,大多数人没有审查 EXPLAIN 计划之类的经验。我想出了一些解决方法(例如将相对时间子句放在子 SELECT 中),但我不断遇到问题的新实例。

一个例子:

解释计划

上面的运行大约需要 15-20 分钟,而下面的在几秒钟内完成。

解释计划

0 投票
1 回答
135 浏览

postgresql - Postgres 9.6 - 包含 jsons 数组的复杂查询 jsonb 字段

我的桌子看起来像这样:

我只想获取jsons 数组中特定 json 上具有类别 X且得分高于 Y 的记录

我设法做的就是使用这样的包含:

我希望我可以做一些简单的查询(比如 NoSQL ..)

当我的字段是一个 json 数组时,有什么方法可以做简单但复杂的 where 子句,例如给出的示例?