问题标签 [postgresql-13]
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.
python - 在 Pycharm 中安装 psycopg2 失败
我正在尝试安装 psycopg2 以在我的 django 项目的后端使用 postgresql 数据库,但每次运行pip install psycopg2
命令时都会收到错误消息:
Error: pg_config executable not found.
我已将包含该文件的 \bin\ 文件夹添加到我的路径中,我也运行了该pip install psycopg2-binary
命令,并且我已经在我的计算机上卸载并重新安装了 posgresql,我还运行了python setup.py build_ext
错误消息中提到的命令,并且这个错误仍然弹出。我在 Windows 10 操作系统上运行并使用 posgresql 13.1。有什么建议么?
编辑:这是我在终端中遇到的错误:
postgresql - Mybatis PostgreSQL 对存在的列抛出错误“列不存在”并且其值是自动生成的
下面是在 PostgreSQL 数据库中成功创建表的 create table 语句。
Mybatis mapper.xml 用于插入
由于 REPOSITORY_ID 是自动生成的值,我没有在插入语句中添加它。当这是通过 sqlSessionFactory 执行时,它返回一个错误说
设置参数时出错
相同的映射器 xml 适用于 MSSQL 和 ORACLE 数据库。我是 PostgreSQL 新手。
database - archive_cleanup_command 不清除归档的 wal 文件
主要问题:
postgresql.conf 文件中的 archive_cleanup_command 不会清除归档的 wal 文件。我怎样才能让它清除存档的 wal 文件?
相关信息:
- 我的操作系统是 Linux,Ubuntu v18.04 LTS。
- 数据库是 Postgresql 版本 13
我当前的设置:
/etc/postgresql/13/main/postgresql.conf 文件:
archive_cleanup_command.log 有 777 权限。
我有一个主数据库与一个发布和一个订阅该发布的从属数据库进行逻辑复制。我打算在奴隶上做归档和恢复点。
我期待发生什么?
postgresql.conf 文件中的检查点超时设置意味着至少每 5 分钟创建一个重启点。并且 10 分钟的 archive_timeout 设置意味着 postgresql 每 10 分钟强制执行一次日志文件段切换。因此,至少每 10 分钟创建一个重启点。每当创建重新启动点时,就会运行归档清理命令。运行此命令时,它将清除所有早于此重新启动点的 .xz 文件。因此 wal_archives 目录不应该真的有 .xz 文件早于 20 分钟甚至 2 小时......
实际发生了什么?
该
/datadrive/postgresql/13/wal_archives
目录堆积了许多永远不会被清除的 .xz 文件。cat archive_cleanup_command.log
显示一个空文件。什么都没有写给它。当我通过 bash 手动运行 pg_archivecleanup 命令时,它可以工作(即清除指定文件之前的所有存档文件,并且 cat archive_cleanup_command 显示已清除的文件。
例如:然后运行
cat archive_cleanup_command.log
给出了这个:
我尝试了什么?
我尝试了各种权限设置(例如:chmod 777 wal_archive 目录,将其他用户添加到 postgres 组等...)
广泛而彻底地阅读了 postgresql 文档,并查看了至少 20 个不同的相关 stackoverflow 帖子。
最初尝试使用 7zip 命令行工具来进行压缩而不是 pxz。
使用以下命令多次成功重启数据库:
删除逻辑复制并在主服务器上重新创建发布并在从服务器上重新创建订阅。
在主服务器上启用检查点。
看着
/var/log/postgresql/postgresql-13-main.log
。不幸的是,此日志中没有显示相关错误。
postgresql - PostgreSQL - 单个存档文件是否仅包含集群上特定数据库的信息,还是包含整个集群的信息?
注意:这个问题是关于 PostgreSQL 版本 13。
在我的 Ubuntu 服务器上,我有一个名为的集群main
,其中有 2 个数据库(第一个用于水果公司,第二个用于汽车公司)。
这是我的 postgresql.conf 文件设置:
/datadrive/postgresql/13/wal_archives/
这会按预期创建 .xz 文件。例如:文件名可能如下所示:
现在我关于这个归档过程的问题如下:
- 这个特定的 .xz 文件是 postgresql 集群中所有数据库的存档吗?即,这个特定的 xz 文件是否包含水果和汽车数据库的存档,还是仅包含其中一个的存档?
- 什么是存档文件?它只是一个 WAL 文件还是一个存档点 + 一个 WAL 文件?
我已阅读此处和此处找到的官方文档,还查看了大量 stackoverflow 和数据库堆栈交换问题,但未能很好地理解存档概念。
postgresql - postgresql 中的重启点是什么?
在 PostgreSQL 版本 13 的 postgresql.conf 文件中,archive_cleanup_command 注释以下列方式解释命令:
- 什么是重启点? 例如:restartpoint 是检查点的同一个词吗?两者的意思完全一样吗?
- 什么时候创建重启点? 例如:如果重启点只是一个检查点,那么检查点将每 5 分钟创建一次,或者无论 checkpoint_timeout 的设置在 postgresql.conf 文件中如何设置。
- 归档清理命令何时运行? 例如:每次达到 archive_timeout(在 postgresql.conf 文件中设置)时,都会运行归档清理命令。如果归档超时设置为 1 小时,则 archive_cleanup_command 每 1 小时运行一次。
sql - SQL 查询:多重挑战
不是 SQL 专家,我正在努力解决以下问题:
我继承了一个大型表(大约 1 亿行),其中包含时间戳事件,这些事件代表大多数短暂现象的阶段转换。不幸的是,这些事件的记录方式有点奇怪,表格如下:
每个现象(phen-ID)都有一个开始事件和一个理论上的结束事件,尽管它可能还没有发生,因此没有记录下来。然后,每种现象都可以经历几种状态。不幸的是,对于某些州,ID 记录在产品或消费者字段中。此外,状态的数量不是固定的,状态之间的时间也不是固定的。
首先,我需要创建一个 SQL 语句,为每个 phen-ID 显示开始时间和最后记录事件的时间(可能是结束状态或中间状态之一)。
仅考虑单个 phen-ID,我设法将以下 SQL 组合在一起:
由于对于特定现象,开始状态始终具有最低的记录时间,因此上述语句正确地将记录的时间范围返回为一行,而不管结束状态是什么。
显然,在这里我必须手动提供 phen-ID。
我怎样才能完成这项工作,以便为每个唯一的 phen-ID 获得一行开始时间和最大记录时间?玩弄试图适应类似的东西,select distinct phen-id ...
但无法自动将它们“喂”到上面。还是我在这里完全不合时宜?
另外:为了澄清,使用上表的理想输出应该是这样的:
c# - 目前仅支持认证明文密码和认证 md5 密码。收到 10
我将 npgsql 用于 postgresql13,但是在尝试连接时出现以下错误:
目前仅支持认证明文密码和认证 md5 密码。收到 10
我的连接线是: NpgsqlConnection conn = new NpgsqlConnection ("Server = xxxx; Port = xxxx; User Id = xxxx; Password = xxx; Database = database;")
在 postgresql 9.6 中一切正常,但它被迁移到 13 版并产生了这个问题
sql - RETURNING ... INTO:“INTO”处或附近的语法错误
我正在尝试将生成的 id 返回到一个变量中,以便我可以使用它在其他表中插入引用的值。
当我删除 'INTO foo_id_0' 部分时,错误不会出现。但这对于我想要做的事情来说是必不可少的。
我究竟做错了什么?
postgresql - 如何仅针对表而不针对触发器和函数执行 pg_dump?
我想要什么:
我想要一个数据库的 pg_dump(我们称数据库为“测试”)。在这个 pg_dump 中,我只想要没有以下内容的表:数据、触发器、函数、序列等。
我正在做什么以获得我想要的:
我运行的命令如下:
我正在观察:
然后,当我尝试在另一台服务器上恢复此转储时,如下所示:
我注意到运行上述命令的部分输出内容如下:
我真正想要的是:
我想要的只是表本身,而不是这些触发器、函数、序列和索引。我怎样才能只得到桌子?
我尝试过/考虑过的其他事情:
我试过这样做:
但它不起作用,因为模式需要是名称而不是 \d 模式。有关选项的信息,
请参见此处:https ://www.postgresql.org/docs/13/app-pgdump.html。-n pattern
可以解决它的一件事是使用多个开关,如下所示:
但是,上述解决方案是不切实际的,因为我的数据库中有大约 70 多个表。
其他相关信息:
PostgreSQL 版本是 13.1
Ubuntu 版本 v16.04(我也在 Ubuntu v18.04 上试过这个)
postgresql - 如何解决流命令的错误读取结果?
我有一个主数据库与一个发布和一个订阅该发布的从属数据库进行逻辑复制。在从站上,我偶尔会收到以下错误:
如何阻止上述错误的发生?
尽管在 postgresql v13.0 中出现此错误,但从数据库上的表似乎可以正常复制。但是,我想解决这个错误。我还尝试下载 postgresql v13.1,并注意到我仍然收到此错误并且它无法正常复制。
那里的人(Henry Hinze)说这是一个错误,通过安装版本 13 RC1 已修复。
但我的经验是相反的,在 postgresql v13.0 中它没有卡在启动循环中,但我注意到在安装 postgresql v13.1 后它正在这样做。
我可以确认我使用的是 postgresql 13.1 版,因为/usr/lib/postgresql/13/bin/postgres -V
它给了我以下输出:
我正在使用 Ubuntu v18.04。
我已经完全卸载了 postgresql 并重新安装它并没有解决问题。从站上的 postgresql.conf 设置是默认设置。master上相关的postgresql.conf如下: