小编oro*_*aki的帖子

为什么 Postgres 会生成一个已经使用过的 PK 值?

我正在使用 Django,但每隔一段时间我就会收到此错误:

IntegrityError:重复键值违反唯一约束“myapp_mymodel_pkey”
详细信息:键(id)=(1)已经存在。

我的 Postgres 数据库实际上有一个主键为 1的myapp_mymodel对象。

为什么 Postgres 会尝试再次使用该主键?或者,这很可能是我的应用程序(或 Django 的 ORM)导致的吗?

刚才这个问题又连续出现了3次。我发现,当它确实发生时,对于给定的表,它会连续发生一次或多次,然后不会再次发生。它似乎在每张桌子完全停止数天之前发生,当它确实发生时每张桌子至少发生一分钟左右,并且只是间歇性地发生(不是所有桌子都立即发生)。

这个错误是如此间歇性的(在 2 周内仅发生 3 次左右 - 数据库上没有其他负载,只是我测试了我的应用程序)这一事实让我对低级问题如此警惕。

postgresql constraint primary-key postgresql-9.2

41
推荐指数
2
解决办法
5万
查看次数

Postgres 9.2 的流式复制如何处理架构更改和初始表设置?

我想在位于我的主要物理数据库服务器下的物理服务器上设置一个备份数据库。我正在使用 Postgres 9.2,并且我想使用同步流复制(用于原子性),但我完全不知道诸如A)初始表设置如何从服务器 1 传输到服务器 2(例如,我运行syncdb来自我的 Django 应用程序,它在服务器 1) 上创建了一系列表),以及B)如何将持续的架构更改从服务器 1 传送到服务器 2(例如,我运行 Django South 迁移,它发送ALTER TABLE查询,以及添加/删除索引等)。这些事情是通过流式复制透明地处理的,还是我必须做些什么才能影响两台服务器之间的这种变化?

schema postgresql replication postgresql-9.2

9
推荐指数
1
解决办法
3394
查看次数

为什么`pg_lsclusters` 没有列出我的 Postgres 集群?

  1. apt-get安装了 Postgres 9.2.4(使用 PPA)。
  2. 我曾经pg_dropcluster --stop 9.2 main删除默认的数据库集群,因为我打算在刚刚挂载的单独 SSD 卷(一个 Rackspace 块存储卷)上创建一个新集群。
  3. 我创建了新集群,其数据驻留在我的 SSD 卷上并启动它(ps显示为该新集群运行的所有正常 Postgres 进程,我能够打开 Postgres shell 并运行 SQL - 即它运行良好)。现在,当我运行时pg_lsclusters,没有列出任何内容。

main在我删除它之前,集群列出得很好。为什么我的新集群不显示,即使它正在运行?我什至重新启动了服务器(以防万一)。

postgresql postgresql-9.2

9
推荐指数
1
解决办法
2万
查看次数

为什么 Postgres ORDER BY 似乎中途忽略了前导下划线?

我有一个animal带有的表name varchar(255),并且我添加了具有以下值的行:

Piranha
__Starts With 2
Rhino
Starts With 1
0_Zebra
_Starts With 1
Antelope
_Starts With 1
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时:

zoology=# SELECT name FROM animal ORDER BY name;
      name       
-----------------
0_Zebra
Antelope
Piranha
Rhino
_Starts With 1
_Starts With 1
Starts With 1
__Starts With 2
(8 rows)
Run Code Online (Sandbox Code Playgroud)

注意行是如何按顺序排序的,这意味着使用前导__Starts With 1行放在行之前Starts,但__in__Starts With 2似乎忽略了这一事实,好像2末尾比前两个字符更重要。

为什么是这样?

如果我用 Python 排序,结果是:

In  [2]: for animal in sorted(animals):
   ....:     print …
Run Code Online (Sandbox Code Playgroud)

postgresql order-by postgresql-9.1 natural-sort

8
推荐指数
1
解决办法
3696
查看次数

给“超级”用户更多的 work_mem

多年来我注意到的一种常见模式是,人们倾向于随着数据大小的增加而不断增加工作内存,因此更复杂的查询仍然可以充分利用内存速度,但对于某些极端任务(例如,报告)。

仅对一些很少运行的异常查询大幅增加该数字可能是有利的。例如,我可能想保持work_mem在例如。8 MB 用于正常操作,然后使用具有 250 MB 工作内存之类的特定客户端/用户运行特定查询,以便我可以在单个会话期间完全在内存中快速执行重大操作。

这可能吗?我是否完全不考虑将其视为解决方案?

postgresql memory configuration

5
推荐指数
1
解决办法
1095
查看次数