Впервые я просил о помощи на форуме в течение очень долгого времени. Обычно найти то, что мне нужно, просмотрев другие сообщения ... Ну, я действительно смущен, поэтому вам нужна помощь.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
'dbMYDATABASENAME.semaphore' doesn't exist: SELECT expire,
value FROM {semaphore} WHERE name = :name; Array ([:name] =>
theme_registry:runtime:garland:cache) in lock_may_be_available() (line 167
of /homepages/28/d228752694/htdocs/drupal7/includes/lock.inc).
базовой таблицы или просмотреть не найден, кажется, ключ, но я не могу понять, почему в том числе функции темы вызывает эту ошибку. У меня есть базовая установка Drupal 7.
Ваша помощь приветствуется!
Madmilner
А, действительно. theme ('pager') пытается запросить таблицу семафоров вашей текущей базы данных, но в этот момент вы все еще подключались к базе данных, отличной от Drupal. Вот почему он работает, когда вы позиционируете его после db_set_active(). – scronide
, но он не пытается запрашивать таблицу семафора по каждому запросу, только, по-видимому, после того, как сайт простаивает какое-то время - так что вы можете оторвать свои глазные яблоки, пытаясь понять это. – David