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