2

我似乎有这个错误:

WordPress database error ERROR:  column p.id does not exist LINE 1: SELECT p.id FROM wp_posts AS p  WHERE p.post_date > '2013-01...

来自这个代码块:

<?php
$posts=$wpdb->get_results($wpdb->prepare(
 "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = %s " .
 "ORDER BY CHAR_LENGTH(meta_value) DESC, meta_value DESC LIMIT 5",
 '_wp-svbtle-kudos'
));
?>

我正在使用带有 wordpress 的 postgresql。我实现了这个,我正在使用这个主题。问题来自这里的第 78 行。

对于 post 数据库如下所示:

在此处输入图像描述

对于 postmeta,它看起来像这样:

在此处输入图像描述

4

2 回答 2

3

Postgres 对大写/无大写很挑剔。我安装的 wordpress 使用 ID 而不是 id 作为数据库中的列名。我做了一个 grep -r 'p/.id' * 并在 wp-includes/link-template.php 中找到了 p.id。在第 1177 行,我有 $query = "SELECT p.id FROM $wpdb->posts AS p $join $where $sort"; 我将其更改为 $query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort"; 错误消失了。

于 2013-01-31T10:20:16.033 回答
2

根据错误消息,我怀疑 WordPress 创建了这样的表。

create table "wp_posts" (
  "ID" int8 primary key,
  ...
);

在 PostgreSQL 中,如果在双引号中使用大写声明列名,则必须以相同的方式访问它。

SELECT p."ID" FROM wp_posts p ...
于 2013-01-03T03:01:15.953 回答