问题标签 [postgresql-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 回答
766 浏览

hibernate - 使用额外的列 Jpa 保存多对多关系

我就是这种情况。我有三个实体:Form、FormComponent 和 FormComponentJoin。它是与额外列的多对多关系。我想通过一次调用 FormRepository save() 方法来保存一个表单实体和他的所有孩子,但它不起作用。这是错误消息:错误是由以下原因引起的:org.hibernate.TransientPropertyValueException:对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例这些是我的实体:

为了进行测试,我使用 CommandLineRunner:

这是完整的堆栈跟踪:

原因:org.hibernate.TransientPropertyValueException:对象引用了未保存的瞬态实例 - 在刷新之前保存瞬态实例:org.fao.backend.entity.FormComponentJoin.formComponent -> org.hibernate 处的 org.fao.backend.entity.FormComponent。 engine.spi.CascadingActions$8.noCascade(CascadingActions.java:398) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:129) at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java :442) 在 org.hibernate.event.internal.DefaultPersistEventListener.entityIsPersistent(DefaultPersistEventListener.java:181) 在 org.hibernate.event.internal 的 org.hibernate.event.internal.DefaultPersistEventListener.justCascade(DefaultPersistEventListener.java:188)。 DefaultPersistEventListener。onPersist(DefaultPersistEventListener.java:145) at org.hibernate.internal.SessionImpl.firePersistOnFlush(SessionImpl.java:838) at org.hibernate.internal.SessionImpl.persistOnFlush(SessionImpl.java:831) at org.hibernate.engine.spi .CascadingActions$8.cascade(CascadingActions.java:357) 在 org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:350) 在 org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:293)在 org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161) 在 org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:379) 在 org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:319) 在 org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:296) 在 org.hibernate.engine。internal.Cascade.cascadeProperty(Cascade.java:161) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:118) at org.hibernate.event.internal.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:167)在 org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:158) 在 org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:91) 在 org.hibernate.event.internal.DefaultFlushEventListener.onFlush (DefaultFlushEventListener.java:55) 在 org.hibernate.engine.transaction 的 org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425) 的 org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)。内部.jdbc.JdbcTransaction。beforeTransactionCommit(JdbcTransaction.java:101) 在 org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177) 在 org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77) .. . 58个常用框架省略

0 投票
2 回答
712 浏览

postgresql - PostgreSQL 9.6 无法在 Ubuntu 16 上连接

我在我的 Ubuntu 16.04 系统上安装了 PostgreSQL 9.6。它似乎已启动并正在运行,但是当我尝试建立连接时它就失败了。当我运行状态命令时,我看到它总是exited出于某种原因说。我在谷歌搜索中看到了很多东西,但似乎没有任何帮助。

我将 pg_hba.conf 中的第一个条目更改为local all postgres trust

% ps augxw | grep postg
postgres 769 0.0 0.3 303964 24384 ?S 22:13 0:00 /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
postgres 772 0.0 0.0 303964 3956 ? Ss 22:13 0:00 postgres: 9.6/main: checkpointer process
postgres 773 0.0 0.0 303964 3956 ? Ss 22:13 0:00 postgres: 9.6/main: writer process
postgres 774 0.0 0.0 303964 3956?Ss 22:13 0:00 postgres: 9.6/main: wal writer process
postgres 775 0.0 0.0 304408 6572?Ss 22:13 0:00 postgres: 9.6/main: autovacuum 启动器进程
postgres 776 0.0 0.0 158964 3204 ?Ss 22:13 0:00 postgres: 9.6/main: stats collector process
ubuntu 1492 0.0 0.0 12944 936 pts/0 S+ 22:14 0:00 grep postg
%
% sudo su - postgres
$ psql -h localhost
psql:无法连接到服务器:连接
被拒绝服务器是否在主机“localhost”(127.0 .0.1) 并接受
端口 5432 上的 TCP/IP 连接?
$ exit
logout
% systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
已加载:已加载(/lib/systemd/system/postgresql.service;已启用;供应商预设:已启用)
活动:自 2017 年 3 月 30 日星期四 22 日起活动(已退出) :13:57 PDT;1 分钟 19 秒前
进程:901 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
主 PID: 901 (code=exited, status=0/SUCCESS)
任务: 0
内存: 0B
CPU: 0
CGroup: /system.slice/postgresql.service

3 月 30 日 22:13:57 ip-172-31-9-223 systemd[1]:启动 PostgreSQL RDBMS...
3 月 30 日 22:13:57 ip-172-31-9-223 systemd[1]:启动 PostgreSQL关系数据库管理系统。

0 投票
1 回答
92 浏览

r - 用户定义函数返回意外结果

这是我在 stackoverflow.com 上的第一个问题!

我创建了以下函数来检查我的 PostgreSQL 数据库中是否存在并删除了一个表,在删除之前和之后。不幸的是,删除功能没有给我预期的输出。当我psql.exists.boolean(x,y)使用输入进行评估时,它会返回 TRUE 的预期结果,但是当我psql.drop(x,y)使用相同的输入进行评估时,它不会返回预期结果。请为我提供一些指导以修复我的错误功能。

0 投票
1 回答
245 浏览

postgresql - 了解查询中的 COUNT 行为与 EXPLAIN 与函数

我很想了解(并可能改进)我在 PostgreSQL 9.6 中遇到的问题。名称简化,但其他所有内容均取自psql会话。

我从物化视图开始,mv.

首先,我创建了两个简单的函数:

让我们花时间查询一些问题。

db=>\timing on

我可以非常快速地计算物化视图的结果。

让我们看看它是如何做到的。

好的。所以它利用了多个工人。但是为什么使用时查询要慢得多EXPLAIN ANALYZE

现在我使用该count_mv()函数,它具有相同的底层 SQL 并声明为STABLE.

哇!为什么这比物化视图上的相同 SQL 慢?而且慢很多!它没有利用并行工作者,如果没有,为什么不呢?

开始编辑

正如下面的答案中所建议的,我加载了auto_explain模块并检查了EXPLAIN函数调用的日志输出。

新的问题是为什么计划了 6 名工人,但没有人启动。否则服务器空闲,配置相同,查询相同。

结束编辑

好的。那么如果我这样做怎么办:

与不使用 直接在物化视图上计算行数相同的性能EXPLAIN ANALYZE,但您必须在这里相信我:此函数的性能取决于创建函数时物化视图的状态。这里的快速计时是表为空时创建函数的结果。如果我在表已满时重新创建函数,该函数需要超过 1000 毫秒才能运行!

总结我的问题:

  1. 为什么 SQL 函数内部的 SQL 查询STABLE不带参数比该函数外部的查询慢得多。
  2. 为什么 SQL 查询在使用时这么慢EXPLAIN ANALYZE
  3. 为什么从函数计算行数时会得到所有不同的结果,这取决于函数的创建时间?

提前致谢!

0 投票
12 回答
50428 浏览

postgresql - pgAdmin won't start (eternal loading)

Once upon a time I had a Postgres database that worked with pgAdmin. I have a webservice running on a WildFly server that made connections to the DB and everything worked fine.

After a while(a few months) I have tried to open pgAdmin again and it stuck on the loading...

I remove postgres and pgAdmin using Revo Uninstall, then installed postgres 9.6 and opened pgAdmin and it stays in the loading screen forever.

Can anyone help me ? [Using postgres 9.6 with pgAdmin v1.3],

On Event Viewer I saw the following error in pgAdmin :

Faulting application name: pgAdmin4.exe, version: 0.0.0.0, time stamp: 0x580f31f6 Faulting module name: MSVCP120.dll, version: 6.3.9600.18438, time stamp: 0x57ae642e Exception code: 0xc0000135 Fault offset: 0x00000000000ecdd0 Faulting process id: 0x1de4 Faulting application start time: 0x01d2a7d1566324ba Faulting application path: C:\Program Files\PostgreSQL\9.6\pgAdmin 4\bin\pgAdmin4.exe Faulting module path: MSVCP120.dll Report Id: 984dd9d8-13c4-11e7-832d-5ce0c535006f Faulting package full name: Faulting package-relative application ID:

0 投票
1 回答
935 浏览

postgresql - 空复合类型和所有空列的复合类型之间的区别

空值和所有列都为空的行类型之间有什么区别吗?Postgres 查询似乎能够区分差异(显示空列而不是空白),我想知道是否有什么我应该注意的。例如

0 投票
2 回答
1276 浏览

json - PostgreSQL JSON 快速搜索(从任意键中搜索值)

我尝试在 PostgreSQL JSONB 列中找到快速搜索功能的解决方案。要求是我们可以在任何 JSON 键中搜索值。

表结构:

CREATE TABLE 实体(id bigint NOT NULL,jtype character varying(64) NOT NULL,jdata jsonb,CONSTRAINT entity_pk PRIMARY KEY (id))

思路是我们在一张表中存储不同类型的json,jtype定义json实体类型,jdata-json数据,例如:

目标是快速搜索用户可以键入“ABS”并找到记录 - 公司和在公司工作的人。

Oracle DB 的模拟是函数包含:

SELECT jtype, jvalue FROM entity WHERE CONTAINS (jvalue, 'ABS') > 0;

GIN 索引只允许搜索键/值对

GIN 索引可用于有效搜索大量 jsonb 文档(数据)中出现的键或键/值对。提供了两个 GIN “操作员类”,提供了不同的性能和灵活性权衡。

https://www.postgresql.org/docs/current/static/datatype-json.html#JSON-INDEXING

0 投票
1 回答
64 浏览

django - 如何使用 psycopg2 获取数据库更新的时间戳

我正在用 Django 实现 HTTP 流。当用户打开网页时,会与服务器建立连接,当对 postgresql 表进行新条目时,该连接会返回数据。

让我们将模型称为“M”,该模型在更新时将数据返回给客户端我有一个视图get_update,它进行时间戳检查并返回数据。我该怎么做呢?

0 投票
0 回答
28 浏览

ruby-on-rails - 两个 Rails 线程可以使用同一个 Postgres 会话吗?

我的 Rails 应用程序在 Postgres 表中插入重复键错误(其中一列具有唯一性约束)。我使用 Postgres 会话级咨询锁作为互斥锁,但它仍在发生。

我的理论是两个 Rails 工作人员共享同一个 Postgres 会话,因此第二个不会被第一个阻止。这甚至可能吗?

0 投票
1 回答
8578 浏览

database - Postmaster.pid 已经存在,说 PID 号在目录中运行但没有进程?

我正在尝试为一个新项目运行 PostgreSQL 9.6.2 db。

当我输入

我收到以下错误消息:

当我获得该文件夹的所有进程的列表时,它会出现:

然后当我尝试

它仍然保留在列表中

当我进入

49425 PID 号不在列表中。

这里出了什么问题?