1.1, Andy (?), 23:38, 27/01/2004 [ответить]
| +/– |
IMHO, базу забыли в примере
$dbh = DBI->connect('DBI:Sybase:server=<host>;port=<port>;database=<base>', 'username', 'password'); | |
|
2.2, Yukko (?), 11:48, 30/01/2004 [^] [^^] [^^^] [ответить]
| +/– |
Перечитал статью, которая получилась после публикации, а так же получил пару писем с репортами, чувствую надо сдалать пару исправлений.
1.
Вместо
(В строке 92 добавить $SYBASE=’/usr/local’)
надо
(В строке 92 добавить $SYBASE=/usr/local)
2.
У тех, у кого эта строка не 92, то вставьте эту стороку перед проверкой переменной $SYBASE. Эту проверку найти нетрудно.
А вообще там есть файл CONFIG, в нем описываются переменные, эту переменную можно попробовать описать ее там.
3.
Последняя редакция скрипта, взял так, как оно работает у меня, если скрипт комментария не добавит/уберет чего, то можете пользоваться:
#!/usr/bin/perl
use DBI;
my @data;
$dbh=DBI-connect('DBI:Sybase:server=192.168.0.7:1433','dbreader','dbreadersql')or die Couldn't connect to database: " . DBI->errstr;
my $sth=$dbh->prepare('select usernamefrom users');
$sth->execute();
while (@data=$sth->fetchrow_array())
{
my $x=@data[0];
print "result\t $x\n";
}
| |
2.3, Yukko (?), 11:50, 30/01/2004 [^] [^^] [^^^] [ответить]
| +/– |
1. Имя базы можно указывать прямо в запросе.
2. У меня подключается без указания базы потому что он имеет права только на одну базу. | |
|
3.5, 2115 (?), 07:58, 10/03/2004 [^] [^^] [^^^] [ответить]
| +/– |
Как решить проблемму с кодировкой, русские символы отоброжаются неправильно. | |
|
4.7, NM (?), 14:45, 05/04/2004 [^] [^^] [^^^] [ответить]
| +/– |
Я задавал такой же здесь вопрос и решил так:
/usr/local/etc/freetds.conf или ~/.freetds.conf
должны содержать строки:
client charset = cp1251
в секциях [global] или [any_server]
Пробовал устанавливать кодировку koi8-r, но в версии freetds-0.62.tar.gz
мне выдает ошибку операции с плавающей точкой. Приходится дополнительно использовать Text::Iconv.
Пробовал также указывать кодировку клиента в строке соединения:
my $dbh = DBI->connect("dbi:Sybase:server=server:1433;database=master;charset=cp1251", $user, $password);
Нужного результата здесь не получается. | |
|
|
|
1.4, Yukko (?), 11:52, 30/01/2004 [ответить]
| +/– |
Где-то символы глотает (пробел скушало):
my $sth=$dbh->prepare('select usernamefrom users');
в запросе должно быть
select username from | |
1.6, NM (?), 10:11, 01/04/2004 [ответить]
| +/– |
У меня все работает, но не могу получить ответ от сервера MSSQL2000 в нормальной кодировке: выдает знаки ???. Видимо где-то происходит преобразование в Unicode. В документации DBD::Sybase говорится про указатель на кодировку клиента - charset. Пробовал разные кодировки, но ничего не менялось (cp1251, iso_1).
В документации по TDS также говорится про перекодировку - iconv, но как настроить не понятно.
Куда копать? | |
1.8, zoomba (?), 15:34, 19/08/2004 [ответить]
| +/– |
Q: У меня все работает, но не могу получить ответ от сервера MSSQL2000 в нормальной кодировке: выдает знаки ???.
---------------
A: Как уже было сказано: /usr/local/etc/freetds.conf или ~/.freetds.conf
должны содержать строки:
client charset = cp1251
в секциях [global] или [any_server]
| |
1.9, pavel_i (??), 18:50, 31/01/2008 [ответить]
| +/– |
Да, но в начала статьи речь шла о MSSQL, а содержание про Sybase. Может имелось ввиду DBI:ODBC?
Как сделать связку FreeTDS и PERL?
| |
|