我在 PostgreSQL 中有这个问题,我正在解析网页元标记,然后将请求输入到 pg_query 中。在此示例中为简洁起见,未对数据进行清理。
所以是这样的:
foreach ($metas as $meta) {
$property = $meta->getAttribute('property');
$content = $meta->getAttribute('content');
$query = "UPDATE " . $tablename . " SET article_meta = article_meta || '$property=>$content'::hstore where article_id = '{$this -> article_id}' ;";
pg_query($conn, $query);
}
问题是,查询不会执行,也不会失败或抛出任何错误。但是,如果我复制已执行的查询并通过 pgadmin 之类的东西运行它,它就可以工作。所以查询不是无效的。关于为什么会发生这种情况的任何想法?
我应该提到,当我添加触发器以更新全文搜索 tsvector 时,这种行为可能已经开始,但我看不出这是如何相关的。
更新
另外我想补充一点,我有一个同步功能,它稍后会运行,但只执行元标记的解析,并且查询有效。所以某处阻止了查询的执行。