2013-03-28 3 views
4

У меня есть один скрипт, в котором я подключаюсь к базе данных и пытаюсь выполнить equec sql-запрос. Мой код как этотПодключиться к базе данных с помощью perl

use DBI; 
$dbh = DBI->connect('Databasename', 'uid','pswd'); 
my $sth = $dbh->prepare ("select * from Tablename"); 
$sth->execute(); 
my @row_ary = $sth->hetshrow_array; 
foreach $item (@row_ary) 
{ 
print "$item\n"; 
} 

, когда я пытаюсь выполнить этот код, который я получаю следующее сообщение об ошибке

Can't connect to data source 'Databasename' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at demo.pl line 2 

Может кто-нибудь пожалуйста, предложить мне, почему я получаю это сообщение. Какую конфигурацию мне нужно выполнить для выполнения sql-запросов.

Благодаря

+1

Мне кажется, что сообщение об ошибке действительно очень ясно. У вас нет «dbi: » в начале строки подключения. Возможно, вам стоит попробовать прочитать документацию для DBI и DBD, которые вы используете. –

ответ

8

DBI является гибким в том, что она поддерживает несколько серверов баз данных (MySQL, Sybase, Oracle и т.д.). Первым параметром, который вы передаете DBI-> connect, является DSN (имя источника данных), а не имя базы данных. Формат DSN является:

dbi:Driver:databasename

Если база данных MySQL, можно использовать mysql для водителя:

dbi:mysql:databasename

Вот more info on DBI.

+3

Вы можете найти имя драйвера, выполнив поиск DBD на cpan. например Postgresql - Pg, потому что модуль DBD :: Pg. Дополнительную информацию о подключении к конкретной базе данных вы можете найти в соответствующих документах DBD. – ikegami

Смежные вопросы