2015-01-26 3 views
0

Впервые я просил о помощи на форуме в течение очень долгого времени. Обычно найти то, что мне нужно, просмотрев другие сообщения ... Ну, я действительно смущен, поэтому вам нужна помощь.Drupal 7 theme ('pager') -> PDOException: SQLSTATE [42S02]: базовая таблица или представление не найдено

Я пытаюсь использовать theme('pager') в Drupal 7 для разбивки на страницы для моих результатов таблицы, которые я получаю от запроса db_select.

Ниже запрос выдает ошибку, когда я включить строку:

$output .= theme('pager');

Если я оставить эту строку я получить ожидаемые результаты 5 ограниченных от моего стола.

Мой код:

// 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(); 

страница делает хорошо без theme('pager') линии.

С его помощью я получаю сообщение об ошибке:

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). 

базовой таблицы или просмотреть не найден, кажется, ключ, но я не могу понять, почему в том числе функции темы вызывает эту ошибку. У меня есть базовая установка Drupal 7.

Ваша помощь приветствуется!

Madmilner

ответ

2

Ошибка вниз к:

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

быть выше db_set_active();

Не знаю, почему это, но это устраняет проблему.

Thanks

+0

А, действительно. theme ('pager') пытается запросить таблицу семафоров вашей текущей базы данных, но в этот момент вы все еще подключались к базе данных, отличной от Drupal. Вот почему он работает, когда вы позиционируете его после db_set_active(). – scronide

+0

, но он не пытается запрашивать таблицу семафора по каждому запросу, только, по-видимому, после того, как сайт простаивает какое-то время - так что вы можете оторвать свои глазные яблоки, пытаясь понять это. – David

Смежные вопросы