小编Ber*_*ner的帖子

pg_restore: [archiver] 文件头中不支持的版本 (1.14)

我有一个实时服务器和开发盒,分别称它们为 live 和 dev,它们都运行 postgresql。我可以使用 pgadmin4 轻松查看和管理两者,并且当我在开发箱上以调试模式通过网站运行时,两者都功能齐全,一个是实时网站,另一个是。很普通的设定。

多年来,我一直在运行我编写的相同 bash 脚本,该脚本转储实时数据库,然后在开发箱上恢复它,因此我拥有最新的实时快照。

今天,这让我失望了标题消息:

pg_restore: [archiver] unsupported version (1.14) in file header
Run Code Online (Sandbox Code Playgroud)

我试图诊断这个问题,并在网上进行了广泛的搜索,但我很困惑并且失败了,所以在这里我掌握了专业知识。

为了帮助我将分享以下内容:

$ pg_dump --version
pg_dump (PostgreSQL) 10.11 (Ubuntu 10.11-1.pgdg18.04+1)
$ pg_restore --version
pg_restore (PostgreSQL) 10.11 (Ubuntu 10.11-1.pgdg18.04+1)
$ pg_dump --host=live.lan --port=5432 --dbname=mydb --username=myuser --format=custom > test.backup
$ ls -l test.backup 
-rw-r--r-- 1 bernd bernd 2398358 Dec 23 23:40 test.backup
$ file test.backup 
test.backup: PostgreSQL custom database dump - v1.14-0
$ pg_restore --dbname=mydb test.backup 
pg_restore: [archiver] unsupported version (1.14) in file …
Run Code Online (Sandbox Code Playgroud)

postgresql ubuntu pg-dump pg-restore

45
推荐指数
3
解决办法
6万
查看次数

按外来键字段的数量排序?

这几乎肯定是一个重复的问题,在这种情况下道歉,但我一直在搜索大约半小时的SO,但在这里找不到答案.对不起,我可能使用了错误的搜索字词.

我有一个用户模型和一个提交模型.每个Submission都有一个名为user_submitted的ForeignKey字段,用于上传它的用户.

class Submission(models.Model):
    uploaded_by = models.ForeignKey('User')
class User(models.Model):
    name = models.CharField(max_length=250 )
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:如何获得提交最多的三个用户的列表?

我尝试在User模型上创建num_submissions方法:

def num_submissions(self):
    num_submissions = Submission.objects.filter(uploaded_by=self).count()
    return num_submissions
Run Code Online (Sandbox Code Playgroud)

然后做:

top_users = User.objects.filter(problem_user=False).order_by('num_submissions')[:3]
Run Code Online (Sandbox Code Playgroud)

但这失败了,我尝试过的所有其他事情都失败了.我可以使用智能数据库查询实际执行此操作吗?或者我应该在视图文件中做些更hacky的事情?

django

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

PostgreSQL 存储哪些时区信息?

PostgreSQL 文档相当详尽且有用:

https://www.postgresql.org/docs/9.2/datatype-datetime.html#DATATYPE-TIMEZONES

但似乎忽略了一个相当有用的点的清晰度,在这个点上清晰度可能是必要的和有帮助的。阅读了文档和各种相关的 stackoverflow 问题和回复后,我怀疑以下情况是正确的:

PostgreSQL 数据类型timestamp with timezone存储日期和时间以及 utcoffset(+ve 在格林威治以东)

我会进一步推断并怀疑这是真的:

PostgreSQL 数据类型timestamp with timezone将日期和时间以及 utcoffset(+ve 在格林威治以东)存储到分钟分​​辨率。

我的问题与这些推论有关。它们是否正确,如果正确,可以转发哪些证据来证实它们,如果不正确,可以转发哪些相反的证据。

这很有趣的主要原因当然是因为如果为真,那么接受表中pg_timezone_names存储的名称或缩写的时区的 PostgreSQL只存储 UTC 偏移量,从而丢失 DST 信息。

意思是,为了使实际时区名称(如表中定义的pg_timezone_names)将来可供读者使用,它必须与旁边的timestamp with timezone列显式存储在一起。

我现在感兴趣的主要原因是我想到了一种相当聪明的渲染时间方式,可以记录地球上任何地方的事件时间。即如果记录的时间在用户当前时区,则将其报告为一个简单的日期/时间(没有时区信息),并且只有当它在与读者不同的时区中时,才报告时区信息(即使如此,时区名称可能比 UTC 偏移量更用户友好)。

如果我希望在网站上实现这种上下文敏感的渲染,看起来我将不得不在我的事件时间(以及我存储的任何其他时区感知日期/时间)旁边存储时区名称。

但是我对基于推理而非知识做出这样的承诺感到不自在,并且想要一些支持或反驳这些推理的证据。

postgresql timestamp-with-timezone

6
推荐指数
1
解决办法
768
查看次数