问题标签 [postgresql-11]
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.
javascript - 如何正确使用查询插入到 nodejs api 中的表中?
我正在开发一个restful Api nodejs,我的第一步是使用数据结构,所有过程都很好,现在我想使用postgresql实现具有持久性的crud,我被困在post端点上,我的查询没有尽管我努力通过。
获取端点运行良好,所有必需品都已安装,只是在后端点上被阻止。在我的代码下面找到
我没有在我的数据库中插入数据,而是收到以下错误
在 Postman 上运行时,console.log(err) 显示了这个
postgresql - 端口 5432 已在使用 postgres mac
安装 Postgresql 11 时出现错误。我上课做对了。谷歌搜索但没有找到。我不是想运行不同版本的 postgresql,我只是想安装它。
postgresql - 使用存储过程 PostgreSQL 11.1 从表中检索数据
我有两列cola
和colb
.
我想使用存储过程从表中选择列。
注意:由于返回类型,我不想使用函数。
尝试:
调用程序:
输出:
数据输出中没有任何内容。
消息窗口显示:
windows - 无法在 Windows 10 上更改 psql 中的目录。PostgreSQL 11
我在 Windows 10 上下载了本地 PosgreSQL 11。
我尝试在命令行窗口中将 psql 中的目录更改为 c:\Program Files\PostgreSQL\11\bin>
我得到无效的命令或目录不存在
我试着跟随
我什至不确定当前目录,因为 pwd 无法识别:
提前谢谢了
UPADATE:弄清楚如何检查当前目录\! cd
试图以这种方式运行命令\! C:\>cd C:\Program Files\PostgreSQL\11\bin
我得到:
laravel-5 - Laravel 5.5 为什么删除方法中的外键违规不会引发异常?
更新 3:9 个月前的这个问题在 Laragon 环境中的 Windows 10 上的 Laravel 5.8 和 Postgresql 11 以及 Ubuntu 机器上的 Apache 2.4 上仍然存在。Eloquent Model 实例 delete() 方法是否只是忽略外键约束?莫名其妙:
我在 Postgresql 9.3 数据库、公司和站点中有两个表。一方面,它们与公司之间存在一对多的关系。如果已将站点分配给公司,则有一个外键约束可防止删除公司。如果我尝试直接在数据库上使用 SQL 查询删除 ID 为“KSL”的公司,则会收到预期的错误:
错误:表“companies”上的更新或删除违反了表“sites”上的外键约束“sites_company_id_fkey” 详细信息:键(company_id)=(KSL)仍然从表“sites”中引用。
我已经定义了一个工匠命令,它的处理方法有一个简单的 try/catch 块:
当我从控制台运行命令时,我收到了预期的错误消息:
SQLSTATE [23503]:外键违规:7 错误:表“companies”上的更新或删除违反了表“sites”上的外键约束“sites_company_id_fkey”详细信息:键(company_id)=(KSL)仍然从表“sites”中引用. (SQL:从“company_id”= KSL 的“companies”中删除)
反映 Postgresql 生成的本机错误消息。但是,当我使用 Ajax 调用使用类似的 try/catch 块从 Controller 调用 delete 方法时,没有捕获到异常并且调用失败并且没有错误的详细信息。我简化了控制器方法,使其与控制台处理程序相同:
通常我会从请求参数中获取 $id 的值。如果我在浏览器中使用带有 RESTful URL 的 get 请求,我会在 Firefox 中收到“连接已重置”消息,在 Chrome 中收到类似消息。我已经提到了我的一个老问题,我认为它有解决方案,但运行composer dump-autoload
没有效果。我已经清除了缓存,重新安装了 Laravel 5.5,更新了我的安装,并再次调用composer dump-autoload
了几次,但没有任何异常或记录的错误消息让我没有任何线索。此开发应用程序的 Debug 设置为 true。
我在 bootstrap 文件夹的 autoload.php 文件中向 PHP 原生函数 register_shutdown_function 传递了一个处理程序:
crash.log 中仅出现“NULL”一词。我检查了 Apache 2.4 error.log 文件和这个 Laravel 应用程序的特定错误日志,但那里没有记录相关详细信息。
这是异常处理程序:
更新 1:我从这个问题中得到了一个线索:Stack size for Apache under Windows。我很快测试了我的在线应用程序(都在 Linux 机器上运行),没有任何问题。异常被正确抛出,并为用户显示一条清晰的消息。我的本地环境是 Windows,看起来 Apache 比 Linux 环境更容易受到这种连接重置错误的影响。正如该问题的答案所建议的那样,我已经增加了 Apache 中的堆栈大小,但它仍然不起作用。我仍然收到连接重置错误。我已经使用 Apache 休息室的最新二进制文件重新安装了 Apache,我正在运行 PHP 7.3。任何人都可以对此有所了解吗?
更新2:卢卡斯对这个问题的回答鼓励我改变服务器。当我php artisan serve
从控制台运行然后调用该ParentTable->delete()
方法时,我得到了预期的异常而没有崩溃。我的 Apache 配置显然有问题。不幸的是,该问题的公认答案并不能解决我的问题。我增加了堆栈大小,但问题仍然存在。
postgresql - 创建序列时在 AS 整数处或附近出现语法错误
当我尝试使用 psql 执行时,我在下面的代码中收到“AS 整数或附近的错误”。
上面的sql语句来自本地机器postgres 11版本的备份文件,在EC2 postgres 9.3版本中执行。我是 postgres 的新手,不知道因为 sql 仅由 postgres 生成,所以它应该与 psql 一起使用。提前致谢。
postgresql-11 - 由于旧的 walsender 进程,pg_create_logical_replication_slot 无限期挂起
我正在测试 2 个 PostgreSQL 11 数据库之间的逻辑复制以用于我们的生产(由于这个答案,我能够设置它 - PostgreSQL logical replication - create subscription hangs)并且效果很好。
现在我正在测试可以在生产数据库上自动设置它的脚本和程序,但是我遇到了逻辑复制槽的奇怪问题。
由于设置中的一些更改需要重新启动,我不得不重新启动逻辑副本——这当然也可能在将来发生在副本上。但是 master 上的逻辑复制槽没有断开连接,并且对于某些 PID 仍然处于活动状态。
我放弃了对 master 的订阅(我仍然只是测试)并尝试使用新的逻辑复制槽重复整个过程,但我面临着奇怪的情况。
我无法使用新名称创建新的逻辑复制槽。在旧的逻辑复制槽上运行的进程仍处于活动状态并显示wait_event_type=Lock
和wait_event=transaction
。
当我尝试使用pg_create_logical_replication_slot
创建新的逻辑复制槽时,我遇到了类似的情况。新插槽已创建 - 我在 pg_catalog 中看到它,但对于发出此命令的会话的 PID,它被标记为活动,并且命令无限期挂起。当我检查进程时,我可以看到这个命令以相同的等待值锁定/事务处于活动状态。
我试图在 postgresql.conf 中激活参数“lock_timeout”并重新加载配置,但它没有帮助。
杀死旧的挂起进程很可能会导致整个 postgres 崩溃,因为它是“walsender”进程。它在进程列表中仍然可见,副本的 IP 状态为“idle wating”。
我试图找到一些可以帮助我强制 postgres 停止这个 walsender 的参数。但是设置 wal_keep_segments 或 wal_sender_timeout 并没有改变任何东西。我什至试图停止复制更长的时间 - 没有效果。
有没有办法在不重新启动整个 postgres 的情况下解决这种情况?就像强制 walsender 超时或事务锁定等...
因为如果在生产中发生这样的事情,我将无法使用重新启动或任何其他“蛮力”。谢谢...
更新: “Walsender”进程在一段时间后“消失”,但日志没有显示任何关于它的信息,所以我不知道它到底是什么时候发生的。我只能猜测它取决于 tcp_keepalives_* 参数。Debian 9 的默认值为 2 小时以保持空闲进程。所以我尝试在 postgresql.conf 中设置这些参数,并将在以下测试中看到。
postgresql-11 - PostgreSQL 逻辑复制依赖于 WAL 段?
我成功地在 2 个 PG 11 云虚拟机之间使用逻辑复制来获取最新数据。但我也尝试发布一些旧表以在数据库之间传输数据,并收到关于缺少 WAL 段的奇怪错误。
这些较旧的分区包含 5-6 天前的数据。我成功地将它们发布在主服务器上,并在逻辑副本上刷新了订阅。但现在我在逻辑副本上收到这些奇怪的错误消息:
这让我很困惑。我试图找到一些信息,但没有找到任何关于根据 WAL 段进行逻辑复制的信息。
该特定主服务器上没有运行流复制,并且我在仅与逻辑复制连接的主服务器和副本上看到这些错误消息。
难道我做错了什么?是否有一些特殊的方法可以发布旧数据?对于较新的数据和最新数据,所有工作都没有问题。
当然,由于我发布了大约 20 个表,因此副本需要一些时间来处理所有表 - 目前它一次总是处理 2 个。但我仍然不明白为什么它应该依赖于 WAL 段......非常感谢。
更新:我尝试取消发布和取消订阅这些旧表并再次发布和订阅它们,但对于完全相同的 WAL 段号仍然得到相同的错误消息。
更新 2:我取消发布和取消订阅那些有问题的表并且错误消息停止,因此它们肯定与逻辑复制有关。它们可能是由快照引起的吗?
更新 3:我刚刚对 WAL 段错误产生了额外的奇怪体验——我的逻辑副本只有很小的磁盘,在所有这些摆弄过程中我忘了检查磁盘使用情况。因此逻辑副本上的 postgresql 由于磁盘已满而崩溃。由于我使用 GCE,我只是调整了根磁盘的大小,并且在实例重新启动后获得了更多空间。但我也找回了与逻辑复制连接时丢失的 WAL 段错误。我的 postgresql 登录副本现在充满了这 3 行的序列:
为什么逻辑复制依赖于 WAL 段?
postgresql - PostgreSQL 中具有大量分区的数据库的查询计划时间很长
我有一个 PostgreSQL 10 数据库,其中包含两个表,它们都有两个分区级别(按列表)。
数据现在存储在 5K 到 10K 分区表(上述两个表的孙子表)中,具体取决于日期。
每个子分区表有三个索引,但分区完成的两列没有索引。(因为我不认为这是必要的,不是吗?)
我观察到的问题是查询计划时间非常慢,但查询执行时间非常快。
即使分区值在查询中被硬编码。
研究这个问题时,我认为 PostgreSQL 10 使用线性搜索来查找分区的元数据是造成它的原因。
参见:https ://blog.2ndquadrant.com/partition-elimination-postgresql-11/
所以我决定试用包含上述两个补丁的 PostgreSQL 11:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=499be013de65242235ebdde06adb08db887f0ea5 https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h =9fdb675fc5d2de825414e05939727de8b120ae81
Helas,版本更改似乎并没有改变任何东西。
现在我知道 PostgreSQL 不太喜欢有很多分区,但我仍然想了解为什么查询计划器在 PostgreSQL 10 和现在的 PostgreSQL 11 中如此缓慢。
查询的一个示例是:
在具有 5K 分区的数据库上运行它将返回Planning Time: 7155.647 ms
,但是Execution Time: 2.827 ms
.
postgresql - 每当我从终端运行 createdb 或 dropdb 时,Postgresql 突然要求我输入密码
我刚刚对 MacOS Mojave 进行了重新格式化并安装了 PG11。在此之前,我从未被要求输入密码来创建或删除数据库,但现在我可以了。无论如何要回到跳过密码提示的旧设置?