Друзья, приветствую!
Использую Drupal 7.
Недавно заметил, что в журнале событий стало генерироваться масса ошибок "PDOException: в функции _menu_router_save() (строка 3898 в файле /var/www/includes/menu.inc)".
Не могу с уверенностью сказать с какого времени это началось и что стало причиной, но, возможно, эта ошибка является причиной того, что у меня сейчас не отрабатывается hook_menu. Т.е. те страницы, которые были когда-то созданы - работают, а новые (или изменения) системой как будто не видятся.
В hook_menu добавлял dpm($items); . Вывод показывает, что в $items присутствуют необходимые пункты, а вот достучаться до этих новых страниц не выходит - ловлю 404 ошибку.
Подскажите, как решить PDOException: в функции _menu_router_save() (строка 3898 в файле /var/www/includes/menu.inc) ?
чтобы не рыться, вот этот кусок (нужную строку пометил):
// Delete the existing router since we have some data to replace it.
db_truncate('menu_router')->execute();
// Prepare insert object.
$insert = db_insert('menu_router')
->fields(array(
'path',
'load_functions',
'to_arg_functions',
'access_callback',
'access_arguments',
'page_callback',
'page_arguments',
'delivery_callback',
'fit',
'number_parts',
'context',
'tab_parent',
'tab_root',
'title',
'title_callback',
'title_arguments',
'theme_callback',
'theme_arguments',
'type',
'description',
'position',
'weight',
'include_file',
));
$num_records = 0;
foreach ($menu as $path => $item) {
// dpm($item);
// Fill in insert object values.
$insert->values(array(
'path' => $item['path'],
'load_functions' => $item['load_functions'],
'to_arg_functions' => $item['to_arg_functions'],
'access_callback' => $item['access callback'],
'access_arguments' => serialize($item['access arguments']),
'page_callback' => $item['page callback'],
'page_arguments' => serialize($item['page arguments']),
'delivery_callback' => $item['delivery callback'],
'fit' => $item['_fit'],
'number_parts' => $item['_number_parts'],
'context' => $item['context'],
'tab_parent' => $item['tab_parent'],
'tab_root' => $item['tab_root'],
'title' => (empty($item['title']) ? 'Заголовок' : $item['title']),
'title_callback' => $item['title callback'],
'title_arguments' => ($item['title arguments'] ? serialize($item['title arguments']) : ''),
'theme_callback' => $item['theme callback'],
'theme_arguments' => serialize($item['theme arguments']),
'type' => $item['type'],
'description' => $item['description'],
'position' => $item['position'],
'weight' => $item['weight'],
'include_file' => $item['include file'],
));
// Execute in batches to avoid the memory overhead of all of those records
// in the query object.
if (++$num_records == 20) {
$insert->execute(); // вот эта строка 3898
}
}
// Insert any remaining records.
$insert->execute();
// Store the masks.
variable_set('menu_masks', $masks);
return $menu;
}
Комментарии
Решено!
Помог рецепт http://www.drupal.ru/blog/84669
в рабочей теме в .info файле в поле name был текст на русском.
переделал тему без кириллицы - все заработало.