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

Главные вкладки

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

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

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

Комментарии

Аватар пользователя tlito tlito 23 мая 2014 в 23:54

все-таки решилось.
как тут: 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
а по-русски он выглядел так:
круглолапая-черепаха-открывает-банку-кока-колы

Аватар пользователя tlito tlito 25 апреля 2015 в 14:50

мне помог этот коммент
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.

Аватар пользователя tlito tlito 27 мая 2015 в 0:53

ошибка все врем повторяется на разных сайтах. яндекс мне показывает эту тему, так что тут оставлю ссылку на решение которой в гугле видно первым по запросу:
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.

Аватар пользователя tlito tlito 24 августа 2015 в 15:48

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