2013-01-03 64 views
2

我似乎有此錯誤:WordPress數據庫錯誤:列p.id不存在|使用Wordpress的Postgres

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' 
)); 
?> 

我使用PostgreSQL與WordPress。我實施了this,我正在使用this主題。問題來自78線here

對於職位的數據庫看起來是這樣的:

enter image description here

而對於postmeta它看起來像這樣:

enter image description here

+0

是什麼讓你認爲錯誤來自*那*代碼塊?錯誤消息中的SELECT語句與該塊中的SELECT語句不匹配。甚至沒有相同的表格。 –

+0

這不是你的錯誤來自何處。您從第78行發佈的SQL與錯誤返回的SQL不匹配。 – maiorano84

+0

我猜是因爲當我影響那行代碼時,錯誤會改變。 – bgadoci

回答

2

基於錯誤信息,我懷疑是WordPress的創建這樣的桌子。

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

在PostgreSQL中,如果在雙引號內聲明使用大寫字母的列名,則必須以相同方式訪問它。

SELECT p."ID" FROM wp_posts p ... 
3

Postgres挑剔帽/無帽。我安裝的wordpress有ID而不是id作爲數據庫中的列名。我做了一個grep -r'p/.id'*並在wp-includes/link-template.php中找到了p.id。在行1177我有 $查詢=「選擇p.id從$ wpdb->職位AS p $連接$其中$排序」; 其中我更改爲 $查詢=「選擇p.ID從$ wpdb->職位AS p $連接$其中$排序」; 並且錯誤消失了。

+0

這確實爲我們解決了這個問題,運行WP 3.5.0和最新的PG4WP。 –

相關問題