PDOException: в функции dblog_watchdog()

17 октября 2012 в 6:56
Аватар пользователя Funtik44 Funtik44 0 11

Помогите, что с этим делать? При добавлении материала на сайт (добавляю под админом за другого пользователя). Вылетает такого рода ошибка (см. ниже), но не всегда, один раз за 10 публикаций. При этом, всё сохраняется. Если айти и повторно сохранить, то вылетает такая же ошибка, но если изменить в названии одну букву, то всё нормально сохраняется. При этом неважно какая длина заголовка, было и с короткими и с длинными названиями.

PDOException: в функции dblog_watchdog() (строка 154 в файле /home/hosting/site.org/docs/modules/dblog/dblog.module).

Комментарии

все-таки решилось.
как тут: http://www.drupal.ru/node/83917
коммент saratsublog
просто адреса страниц были русские, и очень длинная ссылка получалось.
надо увеличить длину ссылки в файле файл modules\dblog\dblog.module на строке 160

'link' => substr($log_entry['link'], 0, 255),

изменить 255 на 850, чтобы русские адреса страниц в крокозябре помещались.
например адрес моей страницы выголядел так:
%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%BE%D0%BB%D0%B0%D0%BF%D0%B0%D1%8F-%D1%87%D0%B5%D1%80%D0%B5%D0%BF%D0%B0%D1%85%D0%B0-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D1%82-%D0%B1%D0%B0%D0%BD%D0%BA%D1%83-%D0%BA%D0%BE%D0%BA%D0%B0-%D0%BA%D0%BE%D0%BB%D1%8B
а по-русски он выглядел так:
круглолапая-черепаха-открывает-банку-кока-колы

23 мая 2014 в 23:54

мне помог этот коммент
http://www.drupal.ru/node/83917

function dblog_watchdog(array $log_entry) {
Database::getConnection('default', 'default')->insert('watchdog')
->fields(array(
'uid' => $log_entry['uid'],
'type' => drupal_substr($log_entry['type'], 0, 64),
'message' => $log_entry['message'],
'variables' => serialize($log_entry['variables']),
'severity' => $log_entry['severity'],
'link' => drupal_substr($log_entry['link'], 0, 255),
'location' => $log_entry['request_uri'],
'referer' => $log_entry['referer'],
'hostname' => drupal_substr($log_entry['ip'], 0, 128),
'timestamp' => $log_entry['timestamp'],
))
->execute();
}
Вместо substr() используем drupal_substr().
Код для Drupal 7.

25 апреля 2015 в 14:50

ошибка все врем повторяется на разных сайтах. яндекс мне показывает эту тему, так что тут оставлю ссылку на решение которой в гугле видно первым по запросу:
PDOException: dblog_watchdog() ( 160 modules/dblog/dblog.module)

мне помогают исправления в двух файлах: includes/bootstrab.inc и modules/dblog/dblog.module

http://www.drupal.ru/node/83917
комментарий venoel:

Решение (файл bootstrap.inc, функция watchdog):
<?php
--- /includes/bootstrap.inc Mon Jan 06 15:56:26 2014
+++ /includes/bootstrap.inc Mon Jan 06 15:53:45 2014
@@ -1723,7 +1723,7 @@
'link' => $link,
'user' => $user,
'uid' => $user_uid,
- 'request_uri' => $base_root . request_uri(),
+ 'request_uri' => urlencode($base_root . request_uri()),
'referer' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '',
'ip' => ip_address(),
// Request time isn't accurate for long processes, use time() instead.
?>
P.S. Ну и после каждого обновления редактировать Smile

И комментарий Darth Raven :

<?php
function dblog_watchdog(array $log_entry) {
Database::getConnection('default', 'default')->insert('watchdog')
->fields(array(
'uid' => $log_entry['uid'],
'type' => drupal_substr($log_entry['type'], 0, 64),
'message' => $log_entry['message'],
'variables' => serialize($log_entry['variables']),
'severity' => $log_entry['severity'],
'link' => drupal_substr($log_entry['link'], 0, 255),
'location' => $log_entry['request_uri'],
'referer' => $log_entry['referer'],
'hostname' => drupal_substr($log_entry['ip'], 0, 128),
'timestamp' => $log_entry['timestamp'],
))
->execute();
}
?>
Вместо substr() используем drupal_substr().
Код для Drupal 7.

27 мая 2015 в 0:53

а если сайт кириллический тогда транслит будет некорректен: сайт.рф/zelenaya-cherepaha-pribyla-k-beregam-avstrali
тогда либо просто отключить Database Logging модуль или ограничить число символов в PATHauto настройках

24 августа 2015 в 15:48