Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
Perl
(Модератор:
McZim
) > Тема:
perl+postgres, ошибка
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: perl+postgres, ошибка (Прочитано 18952 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Gekt0r
Гость
perl+postgres, ошибка
«
:
03-11-2009 08:38 »
Всем привет, возникла проблемка...
Есть сервер Апач, на котором стоит mod_perl, есть база postgres.
На сайте есть скрипт, который время от времени закидывает в базу данные. Так вот, если база пуста, то все проходит нормально.
Если база не пуста, т.е. данные перезаписываются, то появляется ошибка DBD::Pg::db "array must be one-dimensional"
С чем это может быть связано?
«
Последнее редактирование: 03-11-2009 08:54 от Sel
»
Записан
McZim
Модератор
Offline
Пол:
Я странный
Re: perl+postgres, ошибка
«
Ответ #1 :
03-11-2009 08:53 »
тебе перевести ошибку?
Записан
The CBO without stats is like a morning without coffee. (c) T.Kyte.
Sla
Команда клуба
Offline
Пол:
Re: perl+postgres, ошибка
«
Ответ #2 :
03-11-2009 08:54 »
покажи update
Записан
Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор
Offline
Пол:
Re: perl+postgres, ошибка
«
Ответ #3 :
03-11-2009 11:43 »
Еще покажи строчки perl-кода, где готовится и выполняется проблемный SQL-оператор.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Gekt0r
Гость
Re: perl+postgres, ошибка
«
Ответ #4 :
06-11-2009 08:20 »
в общем нашел я проблемную строчку:
$keeper->{SQL}->do("update $keeper->{documents_table} set mtime = now(), dtime = ?, sections = ?, status = ?, name = ? where id = ?", {}, $self->{dtime}, '{'.join(',', $self->sections() ).'}', $self->{status}, $self->{name}, $self->{id}) || do { $keeper->error(); $keeper->{SQL}->rollback() if ( ! $keeper->{handcommit}); return undef };
($keeper - глобальный объект, которая используется для связи с БД)
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: perl+postgres, ошибка
«
Ответ #5 :
06-11-2009 22:44 »
1. Тексты ошибок есть?
2. Проверь:
$self->{dtime}
$self->sections()
$self->{status}
$self->{name}
$self->{id}
на наличие и соответствие типов.
3.
Код:
'{'.join(',', $self->sections() ).'}'
Что ты ожидаешь вставить в оператор UPDATE? Вставится строка. Если не сбойнет на "$self->sections() не массив".
«
Последнее редактирование: 06-11-2009 22:49 от RXL
»
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Gekt0r
Гость
Re: perl+postgres, ошибка
«
Ответ #6 :
10-11-2009 07:51 »
Разобрался.
Глюк был в функции $self->sections(), соответственно, строчке
'{'.join(',', $self->sections() ).'}'
функция иногда возвращала данные в формате массива, с фигурными скобками, а иногда - просто как скаляр. Соответственно, когда возвращался массив, ему добавлялись еще одни фигурные скобки, откуда и возникала ошибка "array must be one-dimensional"
Исправил (:
Записан
RXL
Технический
Администратор
Offline
Пол:
Re: perl+postgres, ошибка
«
Ответ #7 :
10-11-2009 08:27 »
Цитата: Gekt0r от 10-11-2009 07:51
функция иногда возвращала данные в формате массива, с фигурными скобками, а иногда - просто как скаляр. Соответственно, когда возвращался массив, ему добавлялись еще одни фигурные скобки, откуда и возникала ошибка "array must be one-dimensional"
Знаешь, впечатление, что элементарных вещей о языке ты не знаешь. Какие еще "данные в формате массива, с фигурными скобками"? Это звучит бессмысленно.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
Perl
(Модератор:
McZim
) > Тема:
perl+postgres, ошибка
Загружается...