问题标签 [pg-query]

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 回答
467 浏览

php - 查询失败错误:准备好的语句“my_query”不存在

大家好

我正在尝试通过 PHP 将表单数据插入 heroku 中的 postgreSQL DB,我在这里尝试了所有解决方案,但没有解决我的问题!我可以连接到数据库,但没有任何操作对我很有效!这个错误让我发疯!

我的代码是:

0 投票
1 回答
488 浏览

php - php postgresql concat 带文件的超链接

如何在 php postgresql 查询中连接超链接,我试过这个但与单引号和双引号混淆

我的问题是 CONCAT 部分出现语法错误

我试过这样,因为我也有内部连接,其中“im.id”表别名与 php 连接冲突

0 投票
0 回答
342 浏览

php - pg_query_params 不替换查询中的参数

我希望我的应用程序根据它是在本地机器、登台环境还是生产环境上运行来动态更改它使用的数据库和模式名称。我认为 pg_query_params 将是一个不错的选择,因为您可以通过参数化它们来动态地将事物替换到您的查询中。这个想法是将模式名称动态插入到查询中。但是, pg_query_params() 似乎没有替换数组中的值,从而导致查询语法错误。

我已经通过使用 pg_query 和硬编码模式名称而不是参数化它来验证查询本身是有效的。当我查看日志时,我看到以下错误:

PHP 警告:pg_query_params():查询失败:错误:“$1.Line 2 FROM $1.module__c 处或附近的语法错误”

因此,显然, pg_query_params 实际上并没有替换参数(至少从我所见)

结果,pg_query_params() 返回 false,并破坏了整个页面。

代码首先从我的 databaseInfo() 函数中获取一个数组(它为模式名称和连接资源返回一个数组。我已经验证我的这部分代码正在工作并返回预期的信息。

预期结果是 $1 将是模式的名称,$2 将是占位符的值,由条件逻辑确定。

0 投票
2 回答
305 浏览

php - 由于连字符,pq_query 语法错误。我怎么写这个?

这不起作用

我收到此错误:

警告:pg_query():查询失败:错误:“-”或附近的语法错误

这个确实有效

所以我想问题是连字符。写这个的正确方法是什么?我已经尝试将列名包含在几乎所有内容中......“时间领主”、[时间领主]、“时间领主”,但似乎没有任何效果。

0 投票
1 回答
445 浏览

php - MySQL 到 Postgres 转换 + 奇怪错误后 PHP 查询不起作用

设置 - PHP 7 应用程序。- Postgres 在 Heroku Hobby v11.x 上 - MySQL 版本是 v5.5.56 和协议 10 - 我对 PHP 不太了解 - 我对低级 Postgres 转换没有深入了解。

我使用 pgloader 从 MySQL 迁移到 Postgres。

我知道连接正常。在将 MySQL 函数与 Postgres 交换后,一些查询正在工作 - 我知道这一点,因为我可以看到数据填充。我还必须进行一些调整才能使查询正常工作。

复制字段的查询具有有效的 SQL 语句,但出现以下错误。我知道这个查询很好,因为我已经将它回显并粘贴到我的 Navicat SQL 窗口中,它会产生正确的结果。

DB 用户似乎拥有访问campaigns表并获得所需内容的所有适当权限。

我继续寻找另一个非常奇怪的问题。

无论我使用什么来尝试使用有效的 SQL 语句使用 PHP 运行查询,我都没有得到任何数据。
-pg_pquery -pg_fetch_array -pg_query_params -pg_fetch_array

请参阅下面的代码示例。

我在 apache2 终端窗口的尾随日志中看到错误,但在数据库 pgAdmin 上看不到任何实际连接或活动。

Heroku DB 上的日志似乎也没有出现?不确定这是否是因为它只是一个爱好。

我已经检查了所有明显的东西,比如确保我们连接到正确的数据库等等。

使用 Navicate 时,我在尝试调用表 DESIGN 函数时遇到了以前从未见过的错误。我收到以下错误。不确定这是否对上述问题有影响。我能够测试其他相同版本的 Postgres,发现下面的这个错误不存在。因此,也许 pgloader 正在创建一些无法解决的低级别问题。

这是我们尝试运行的查询。这在 Navicat 中确实有效。

或者

在过去的 20 个小时里,我一直在研究这个问题,我很难过任何帮助或想法都会得到很大的帮助。

温馨问候,

凯西哈弗诺

0 投票
1 回答
1509 浏览

laravel - SQLSTATE [42883]:未定义函数:7 错误:函数 date_format(日期,未知)不存在

我创建了这个来比较现在的时间与我的表行 executes_at 中的时间相同。

它在 MySQL 中工作但因为现在我们使用 PostgreSQL 我有这个错误

SQLSTATE [42883]:未定义函数:7 错误:函数 date_format(日期,未知)不存在

有人可以帮我解决这个问题。

0 投票
1 回答
612 浏览

node.js - 具有快速流式 http 响应的 nodejs

我有以下测试代码:

我一直试图让它流式传输数据,但没有成功。我确实尝试了带有querystream的pg-query-stream,但最终出现以下错误,当我尝试时

_http_outgoing.js:607 抛出新的 ERR_INVALID_ARG_TYPE('第一个参数', ^

TypeError [ERR_INVALID_ARG_TYPE]:第一个参数必须是字符串或缓冲区类型之一。在 ServerResponse.write (/usr/src/app/node_modules/compression/index.js:89:18) 在 ServerResponse.write (_http_outgoing.js:579:10) 处的 write_ (_http_outgoing.js:607:11) 接收到类型对象) 在 PgQueryStream.ondata (_stream_readable.js:705:22) 在 PgQueryStream.emit (events.js:193:13) 在 addChunk (_stream_readable.js:295:12) 在 readableAddChunk (_stream_readable.js:276:11) 在PgQueryStream.Readable.push (_stream_readable.js:231:10) 在 cursor.read (/usr/src/app/node_modules/pg-query-stream/index.js:55:14) 在 Immediate.setImmediate (/usr/ src/app/node_modules/pg-cursor/index.js:91:7)

0 投票
0 回答
79 浏览

php - 为什么 PHP 和 PostgreSQL 对什么是有效的 UTF-8 有截然不同的想法?

我在 PHP 中有一个 $string 。这来自哪里并不重要(它来自传入的电子邮件);重要的是,有时,根据 PostgreSQL,它不是有效的 UTF-8,但根据 PHP ,它是有效的。

我明确设置了 mb_internal_encoding('UTF-8') 和 mb_regex_encoding('UTF-8')。在建立 PostgreSQL 数据库连接时,我将 client_encoding 显式设置为“UTF8”(是的,它希望它没有“-”)。我一遍又一遍地验证 PG 数据库本身使用 UTF8。简而言之:我系统上的所有内容都使用 UTF-8 编码。

详细信息:PHP 7.4.1。PG 11.5。Windows 10。(对于 PHP/PG/Windows 的许多版本,同样的事情已经发生了很多年。)

在尝试插入包含 $string 的记录之前,我进行了以下完整性/安全性检查以避免错误:

偶尔——不是每次!-- PostgreSQL 对此嗤之以鼻,尽管 PHP 已检查它是有效的 UTF-8。它吐出/记录此错误:

我不明白。我能看到的唯一解释是 PostgreSQL 和 PHP 对什么是有效的 UTF-8 有不同的想法。这个问题困扰了我多年,但我似乎永远无法解决它。一次又一次,有时在几周或几个月之间,一些外部数据进入我的系统会导致这个问题。尽管我的检查!

有什么我可以告诉 PostgreSQL 让它以不同的方式处理这个问题的吗?我不希望记录该错误。真的,真的很烦。

在这一点上,我完全不知道这是怎么发生的。PHP 或 PostgreSQL 错了吗?考虑到我已经处理了多少次并试图通过无数种不同的方法来解决它,在这一点上我做错了什么似乎是不合理的。

0 投票
1 回答
70 浏览

php - 使用 PHP 的 pg_* 函数时如何检测 PostgreSQL 中的死锁?

我在 PostgreSQL 中使用事务。事务是严肃数据库的必要组成部分。交易不可避免地导致“死锁”。死锁按原样记录为错误。我不想记录任何错误,所以我需要处理这些死锁。据称,死锁是通过检测它们、抑制错误并重试查询直到它通过而没有死锁来处理的。

到目前为止,一切都很好。

现在开始解决问题。我使用pg_query_params()andpg_query()向 PostgreSQL 发送查询。这两者都FALSE在失败时返回,或者在成功时返回“查询结果资源”。当 PostgreSQL 检测到死锁时,这些函数因此返回 aFALSE并且我的 PHP 错误日志会收到一堆关于死锁的噪音。

PHP手册是这样说的pg_last_error()

错误消息可能会被内部 PostgreSQL (libpq) 函数调用覆盖。如果 PostgreSQL 模块函数内部发生多个错误,它可能不会返回适当的错误消息。

因此它不可靠,不能使用。它继续说:

使用 pg_result_error()、pg_result_error_field()、pg_result_status() 和 pg_connection_status() 来更好地处理错误。

查阅了这些功能后,我惊恐地意识到(正如它所说):

因为如果查询失败 pg_query() 返回 FALSE,你必须使用 pg_send_query() 和 pg_get_result() 来获取结果句柄。

pg_send_query()pg_send_query_params()反过来是异步的。我不需要也不理解这样的“异步”SQL 查询。我不明白这是怎么可能的,也不明白为什么有人会想要它。

最终的结果是,再一次,我发现自己被画在一个角落里,似乎唯一的出路就是爬过烟囱,把自己弄得又脏又乱。

看来我被迫完全放弃pg_query_params()pg_query()只是为了能够检测到死锁。真的可以这样吗?我只能想象“异步”而不是以“阻塞”、有序的方式发送 SQL 查询会产生什么新错误。

为什么这总是发生?每次我尝试做任何事情时,无论多么基本或常见,它似乎总是被其他人认为是“奇怪的边缘情况”。除了通过使用这些奇怪的“异步”函数(直到昨天我还没有听说过)来危及整个应用程序的完整性之外,肯定有一种方法可以检测死锁吗?

即使我要使用它们,仍然非常不清楚我将如何准确地检测到死锁。他们是否希望我解析错误并查找诸如“死锁”之类的英文字符串?这似乎也不对。感觉就像一个奇怪的黑客。

真的没有正确、干净的方法来检测死锁以便正确处理它们吗?

简单地抑制 PHP 错误(通过使用自定义错误记录器并检查字符串)只会解决错误日志噪音的问题,但实际上不会使死锁查询重试,因此他们永远不会完成他们的工作,只是默默无闻忽略。

0 投票
0 回答
84 浏览

node.js - 在节点中流式传输时,postgres 查询需要更长的时间:如何优化?

这就是我在 Node 中查询数据的方式:

我的 CSVStream 如下所示:

当我在 pgAdmin 中运行它时,SQL 查询需要大约 10 秒才能运行。通过节点时,至少需要3倍的时间。

我将如何隔离我在代码中浪费时间的地方?

如何确保它花费的时间与 pgAdmin 大致相同?