Reputation: 6493
I seem to have this error:
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...
Coming from this block of code:
<?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'
));
?>
I'm using postgresql with wordpress. I implemented this and I am using this theme. The problem is coming from Line 78 here.
For post the database looks like this:
And for postmeta it looks like this:
Upvotes: 2
Views: 1161
Reputation: 41
Postgres is picky on caps/no caps. The wordpress I installed had ID rather than id as the column name in the database. I did a grep -r 'p/.id' * and found p.id in wp-includes/link-template.php. On line 1177 I had $query = "SELECT p.id FROM $wpdb->posts AS p $join $where $sort"; which I changed to $query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort"; and the errors went away.
Upvotes: 3
Reputation: 95622
Based on the error message, I suspect that WordPress created the table like this.
create table "wp_posts" (
"ID" int8 primary key,
...
);
In PostgreSQL, if you declare a column name using uppercase within double quotes, you have to access it the same way.
SELECT p."ID" FROM wp_posts p ...
Upvotes: 2