ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Все о MySQL. Трассировка выполнения программы


28-12-2009

Интерфейс DBI имеет в своем арсенале мощный и полезный метод trace(), который может пригодиться при отладке неожиданного поведения разработанных сценариев Perl. Этот метод можно использовать для точного отслеживания всех процессов, которые происходят внутри DBD при его работе на различных фазах работы с базой данных. Perl различает девять "уровней" информативности отладочной печати, и первый из них является наименее детализированным.
Листинг 20.27.
#!/usr/bin/perl
# загрузить модуль use DBI();
# соединить
my $dbh = DBI->connect("DBI:mysql:database=somedb;host=localhost", "user", "pass");
# начать отладку $dbh->trace(2);
# выполнить запрос
my $sth = $dbh->prepare("SELECT * FROM mybooks"); $sth->execute();
# просмотр результирующего набора while(my $ref = $sth->fetchrow_hashref())
{
print "Название: $ref->{,title,}nАвтор: $ref->{'author'}nn";
}
# очистить $sth->finish(); $dbh->disconnect();
Вывод трассировки представлен на рис. 20.2.
Внимательное изучение среднего сегмента (рис. 20.2) проясняет причину ошибки в работе сценария: это ошибка в имени таблицы.
Как видно из предыдущего примера, отладочный вывод выводится непосредственно на стандартное устройство вывода. Если этого не нужно делать, можно направить отладочный вывод в файл, задав его имя вторым аргументом метода trace() . Например, следующая строка направит вывод в файл /tmp/error.log.
Трассировка выполнения программы
Точная отладка
Метод trace() может ассоциироваться с дескрипторами, как баз данных, так и операторов. При вызове в качестве метода дескриптора базы данных, метод trace() обеспечивает отладочными сообщениями во время соединения с базой данных. При вызове в качестве метода дескриптора оператора, он трассирует только деятельность, связанную с соответствующим запросом. Эта возможность локализации трассируемых данных по определенному запросу или оператору, позволит получать трассировку по одному из вызовов при наличии в сценарии большого количества вызовов prepare(), execute() и do() .
Отключить отладочную трассировку можно, задав уровень трассировки, равный 0. Листинг 20.29.
$dbh->trace(0);
С точки зрения возможности появления и обработки исключительных ситуаций, ин­терфейс DBI также позволяет задавать большое количество дополнительных атрибутов (в хеше) как необязательный четвертый аргумент метода connect(). Список значений этого атрибута содержится в табл. 20.5.
Среди них одним из наиболее полезных является атрибут RaiseError, позволяющий запрограммировать следующие действия: при возникновении ошибки во время сеанса 
работы с базой данных, Perl активизирует исключительное событие, которое обрабатывается блоком eval(), и немедленно завершить выполнение сценария по команде die(). Этот атрибут вместе в другими перечисленными атрибутами, может использоваться для настройки обработки ошибок как для объектов дескрипторов баз данных, так и объектов дескрипторов операторов.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Обработка ошибок Все о MySQL. Вспомогательные функции