Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Скрипт выдаёт ошибку DBD::mysql::st execute failed


Автор: luser2012 11.2.2012, 23:50
 Здравствуйте!

У меня проблема с запуском скрипта, делаю по книги "Применение mysql и perl в web-приложениях" автор Поль Дюбуа

При обработке основного скрипта вылетает вот такая беда: DBD::mysql::st execute failed: FUNCTION ada54.concat does not exist at /usr/local/lib/perl5/5.10.1/ada54.pm

Фаил ada54.pm это библиотека для работы основного скрипта. В этом файле прописаны функции, вот код функции на которую ругается mysql

sub get_lookup_values
{
my ($dbh, $query) = @_;
my ($sth, @val, $label_ref);

    $sth = $dbh->prepare ($query);
    $sth->execute ();
    # check whether or not query returns a label column
    $label_ref = {} if $sth->{NUM_OF_FIELDS} > 1;
    while (my @row = $sth->fetchrow_array ())
    {
        push (@val, $row[0]);
        $label_ref->{$row[0]} = $row[1] if $label_ref;    # add label map entry
    }
    $sth->finish ();
    return (wantarray () ? (\@val, $label_ref) : \@val);
} 


Подскажите пожалуйста в чем причина ошибки?

Автор: vadiml 12.2.2012, 00:38
Если ругается DBD::mysql, то надо приводить SQL запрос, вероятнее всего проблема именно в нём.

ЗЫ А вообще вместо запроса из данного примера (prepare + execute + while-fetchrow) лучше использовать selectall_arrayref с параметром Slice.

И на русском книги Поля Дюбуа несколько устаревшие, особенно в отношении MySQL.

Лучше прочтите http://search.cpan.org/~timb/DBI-1.617/DBI.pm

Автор: luser2012 13.2.2012, 06:41
Я бы хотел поблагодарить vadiml, за быстрый ответ на поставленный вопрос, который я описал выше, правда я всеже не сделал так как описал vadiml, а исправил по другому.

Ошибка возникала из-за моей невнимательности. Я внес неверные данные в базу mysql. 

А и еще в книги Поля Дюбуа, тоже описаны методы выборки верхнего уровня selectall_arrayref, так что книга и по наше время еще актуальна.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)