Atmospherika
  • Slide1
  • Slide2
  • Slide3

Подключение модуля DBD::mysql Perl на denwer

Вступление, которое можно не читать.

 

Задали нам сделать галерею на ajax+бд+perl для  самостоятельного изучения perl. Бегло проглядела язык, увидела, что он чем-то похож на php, задача была понятна, но меня интересовало, как подключаться к БД. Решила устроить себе быстрый старт и пока что не разбираясь в синтаксисе, заняться именно базой данных и вывести на экран первые данные. Но именно быстрого старта не вышло. И дело совсем не в том, что  это сложно, просто нигде об этом нормально не написано. Может быть потому, что никто не пользуется mysql на perle под denwer? Настолько, что модуль dbd::mysql просто не включен в стандартный пакет.. Чтение мануалов и ответов на форумах поначалу не давало ничего, но в конце концов информация по крупицам собралась и модуль был установлен. А процесс-то совсем простой.

 

Установка модуля DBI-mysql на denwer

 

1. надо скачать пакет расширений для denwer ActivePerl

2. также скачайте данный файл и разархивируйте в удобную для вас папку

3. после установки ActivePerl переходим в папку C:\WebServers\usr\local\perl\bin и запускаем ppm-shell.bat

4. и вводим install  путь_до_файла_из_пункта_2/DBD-mysql.ppd (у меня выглядело так install D://DBD-mysql/DBD-mysql.ppd

5. Перезагружаем denwer. После перезагрузки открываем для проверки в папке C:\WebServers\usr\local\perl\bin ppm.bat, в поиске набираем mysql — пакет должен быть найден

А теперь скрипт для проверки работы БД:

#!/usr/local/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use DBI; #для mysql
print "Content-type: text/html; charset=utf-8\n\n";
print <<start;
<html>
<head>
</head>
<body>
start
my $ds = 'DBI:mysql:tms:localhost';
my $mysql_user = 'root';
my $mysql_pass = '';
my $db = DBI->connect($ds, $mysql_user, $mysql_pass) or die("Ошибка: $DBI::errstr");
#~~~~~~~~~~~~~
$db->do("SET NAMES utf8");
my $res = $db->prepare("SELECT * FROM `staff`");
$res->execute();
if($res->err)
{
print $res->errstr;
} 
else 
{
my $registreted = $res->rows();
print 'Всего записей: <strong>',$registreted, '</strong><br><br>';
	if($registreted > 0)
	{
		while(my @row = $res->fetchrow_array())
		{
		print "$row[0]";
		print "$row[1]";
		}
	print "</table>";
	}
}
$res->finish();
$db->disconnect();
print "</body></html>";

 

В самом начале кода всегда пишем shebang-строку #!/usr/local/bin/perl -w и если мы используем БД, то подключаем библиотеку строкой use DBI; DBI должен быть включен в пакет.

 

Немного об ошибках

 

Вообще говоря, установить пакет DBD-mysql можно через ppm-shell.bat, набрав install BDB::mysql или install BDB-mysql (и проверить, что файлы установлены можно этими же командами). Но у меня так сделать не выходило ни в какую. Именно поэтому прикладываю файл из пункта  2.

Также может возникать ошибка при установке файла вида

Downloading DBD-mysql-4.022…redirect
Downloading DBD-mysql-4.022…failed 401 Authorization Required
ppm install failed: 401 Authorization Required

 

Что именно ее вызывает — не знаю, но у меня на стационарном компьютере она убралась после того как в Perl package manager (ppm.bat) в настройках поменяла область(area) на local, но возможно, что это даже не связано! На ноутбуке такой проблемы не возникло. Также не изменяйте DBD-mysql.ppd. Когда я решила оставить в нем ссылку только на один архив — появилась ошибка с сообщением, что пакет несовместим с моей ОС.

 

Опубликовано: calendar2014-10-05  clock4:13

Метки: , , ,

Добавить комментарий

Ваш e-mail не будет опубликован.
Поля, отмеченные * обязательны для заполнения.

*


− 7 = ноль