Метаданные
Теперь пересмотрим вышеупомянутые методы в отношении метаданных.
Дескриптор базы данных
Как упомянуто выше, Вы получаете дескриптор базы данных с помощью:
$dbh = Connect Mysql $host, $database;
Дескриптор базы данных хранит сведения о хост-имени сервера, его порте и имени базы данных, с которой установлена связь. Эти три значения можно получить так:
$scalar = $dbh->sock; $scalar = $dbh->host; $scalar = $dbh->database;
База данных не определена, если связь установлена без аргументов или только с одним аргументом.
Операторный дескриптор
Два конструктора возвращают операторный дескриптор:
$sth = ListFields $dbh $table; $sth = Query $dbh $sql_statement;
$sth хранит все метаданные, предоставляемые API:
$scalar = $sth->affected_rows; | Сколько записей вставлено или изменено. |
$scalar = $sth->info; | Статистика о предыдущих запросах ALTER TABLE или LOAD DATA FROM INFILE. |
$arrref = $sth->is_blob; | Массив битов, специфицирующих является ли данное поле BLOB. |
$arrref = $sth->is_not_null; | Массив битов, специфицирующих является ли данное поле NULL. |
$arrref = $sth->is_pri_key; | Массив битов, специфицирующих является ли данное поле первичным ключом. |
$arrref = $sth->is_num; | Массив битов, специфицирующих является ли данное поле числом. |
$scalar = $sth->insert_id; | Значение, присвоенное столбцу с помощью AUTO_INCREMENT последним INSERT. |
$arrref = $sth->length; | Массив длин всех полей в байтах. |
$arrref = $sth->name; | Имена всех столбцов. |
$scalar = $sth->numrows; | Количество возвращаемых записей. |
$scalar = $sth->numfields; | Количество возвращаемых полей. |
$arrref = $sth->table; | Имена каждого столбца в таблице. |
$arrref = $sth->type; | Тип каждого столбца, определен в mysql.h. Доступен с помощью &Mysql::CHAR_TYPE, &Mysql::INT_TYPE, &Mysql::REAL_TYPE |
Опция -w
Опция -w может быть очень полезной в случае проблем с отладкой. Если Вы вызываете программу на perl с опцией -w, то предупреждения, обычно хранимые в $Mysql::db_errstr будут выводиться в STDERR (стандартный поток ошибок). Таким образом, Вы получите сообщения об ошибках сервера MySQL без обработки их в Вашей программе.
Если надо использовать опцию -w, но не надо, чтобы сообщения об ошибках увидел демон MySQL, можно установить переменную $Mysql::QUIET в любое ненулевое значение.