简体   繁体   English

Drupal 7 theme('pager')-> PDOException:SQLSTATE [42S02]:未找到基表或视图

[英]Drupal 7 theme('pager') -> PDOException: SQLSTATE[42S02]: Base table or view not found

first time i have asked for help on a forum for a very long time. 我第一次在论坛上寻求帮助已经很长时间了。 Normally find what i need by viewing other posts... Well i'm really confused so need help. 通常,通过查看其他帖子可以找到我需要的东西。。。我真的很困惑,所以需要帮助。

I am trying to use theme('pager') in Drupal 7 to have pagination for my table results i get from a db_select query. 我试图在Drupal 7中使用theme('pager')对我从db_select查询中获得的表结果进行分页。

The below query produces an error when i include the line: 当我包含该行时,以下查询会产生错误:

$output .= theme('pager');

If i leave this line out i get the expected limited 5 results from my table. 如果我不填写这一行,我将从表中获得预期的有限5个结果。

My code: 我的代码:

// Set external databse
db_set_active('nondrupal');

// build query to get desired results
$query = db_select('diary', 'n')
->fields('n', array('photo_id', 'photo'))
->orderBy('photo_id', 'DESC');

//Create a new object from extend. The reason for this is that extend() creates a new object which wraps the current object (Decorator pattern).
$query = $query->extend('PagerDefault')->limit(5);

// Execute query and add to array
$result = $query->execute();

// empty output var
$output = NULL;

// Loop through results and output each row for chosen columns
foreach($result as $row) {
$output .= $row->photo_id.': '.$row->photo.'<br />';
}

// Show pagination in output
$output .= theme('pager');

// echo output to screen
echo $output;    

// Set db connection back to default (drupal)
db_set_active();

The page renders fine without the theme('pager') line. 没有theme('pager')行,页面呈现良好。

With it i get an error: 有了它我得到一个错误:

Additional uncaught exception thrown while handling exception.
Original

PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table  
&#039;dbMYDATABASENAME.semaphore&#039; doesn&#039;t exist: SELECT expire, 
value FROM {semaphore} WHERE name = :name; Array ( [:name] =&gt; 
theme_registry:runtime:garland:cache ) in lock_may_be_available() (line 167 
of /homepages/28/d228752694/htdocs/drupal7/includes/lock.inc).

Base table or view not found seems to be the key but i cannot see why including the theme function causes this error. 找不到基表或视图似乎是关键,但是我看不到为什么包括主题功能会导致此错误。 I have a basic Drupal 7 install. 我有一个基本的Drupal 7安装。

Your help is appreciated! 感谢您的帮助!

Madmilner Madmilner

The error is down to the: 错误归结为:

// Show pagination in output 
$output .= theme('pager'); 
// echo output to screen 
echo $output; 

being above db_set_active(); 高于db_set_active();

Not sure why this is but it fixes the problem. 不知道为什么会这样,但是可以解决问题。

Thanks 谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM