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

Аватар пользователя Funtik44

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

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

Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя tlito
tlito 4 года назад

я не знаю как решать. подскажите?

Аватар пользователя tlito
tlito 4 года назад

все-таки решилось.
как тут: 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 4 года назад

не не работает. так еще больше ошибок. хотя все равно добавляется тема

Аватар пользователя tlito
tlito 4 года назад

подскажите люди, как решать?

Аватар пользователя albee29
albee29 4 года назад

и я подпишусь, аналогичная ошибка

Аватар пользователя tlito
tlito 3 года назад

мне помог этот коммент
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 3 года назад

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

И комментарий 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 3 года назад

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