Chinaunix

标题: 求大大们帮忙看看这个脚本 [打印本页]

作者: ppiqq    时间: 2009-05-25 11:40
标题: 求大大们帮忙看看这个脚本
此贴已改
#!/usr/bin/perl

use DBI;

$dsn = 'DBI:Sybase:server=sql1';

my $dbh = DBI->connect($dsn, "test", 'test');
die "unable to connect to server $DBI::errstr" unless $dbh;

$dbh->do("use sqltest";

$query = "SELECT * FROM testtable";
$sth = $dbh->prepare ($query) or die "prepare failed\n";
$sth->execute( ) or die "unable to execute query $query   error $DBI::errstr";

$rows = $sth->rows ;
print "$row rows returned by query\n";

while ( @first = $sth->fetchrow_array ) {
   foreach $field (@first) {
      print "field: $field\n";
   }
}

[root@nagios ~]# ./a
Segmentation fault
[root@nagios ~]#



————————————————————————————————————————————


/etc/freetds.conf文件内容为:
[sql1]
        host = fabu
        port = 1433
        tds version = 4.2

——————————————————————————
[root@nagios ~]# ping fabu
PING fabu (192.168.3.235) 56(84) bytes of data.
64 bytes from fabu (192.168.3.235): icmp_seq=0 ttl=128 time=1.81 ms

--- fabu ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.810/1.810/1.810/0.000 ms, pipe 2
[root@nagios ~]#

为什么这个程序不行呢 我按照文档说的 是运行tsql没有问题啊

[root@nagios ~]# tsql -S fabu -U test
locale is "en_US.UTF-8"
locale charset is "UTF-8"
Password:
1>
2>

[ 本帖最后由 ppiqq 于 2009-6-1 16:38 编辑 ]
作者: ulmer    时间: 2009-05-25 11:40
标题: 回复 #13 ppiqq 的帖子
Hi,
if DBD::Sybase is correctly installed, just check connection to MS SQL server like this:
perl -mDBI -le 'print DBI->connect("dbi:Sybase:server=_IP_", "_USER_", "_PASSWORD_")'
give your own _IP_, _USER_. _PASSWORD_ there and see what's happed.
If you get output such as: DBI::db=HASH(0x82b9e74), the connection is OK!

DBD::Sybase requires freetds libary (i.e.:  /usr/lib/libtds.so.4.0.0) to compilation:
export SYBASE=/usr/lib/freetds
perl Makefile.PL
make
make install
Note: The export line is to let the compilation process know where to find the freetds libraries.

good luck.

[ 本帖最后由 ulmer 于 2009-5-25 17:36 编辑 ]
作者: ppiqq    时间: 2009-05-25 11:42
小弟执行之后 提示Segmentation fault  不知道怎么回事 请大大们帮忙看看吧
作者: qfmeal    时间: 2009-05-25 12:01
我只有写c程序的时候才 Segmentation fault   ……
perl也可以?
作者: Perl_Er    时间: 2009-05-25 12:07
标题: 回复 #3 qfmeal 的帖子
恩,也可以
作者: ppiqq    时间: 2009-05-25 12:31
tha is all????????
作者: cobrawgl    时间: 2009-05-25 13:03
你能不能先把代码格式化一下啊,

那么多笑脸,怎么看啊

再者,你学过编程,没学过除虫么?
作者: DQP    时间: 2009-05-25 13:13
这段代码本身没什么问题。  是不是你的Sybase:BD装得有问题。
这个文件的名字叫check_mssql.pl。
你是想连接sqlserver么。 连sqlserver的话还是推荐用ODBC。
作者: ppiqq    时间: 2009-05-25 13:42
原帖由 cobrawgl 于 2009-5-25 13:03 发表
你能不能先把代码格式化一下啊,

那么多笑脸,怎么看啊

再者,你学过编程,没学过除虫么?


cobrawgl大大 这个我真不会
作者: ppiqq    时间: 2009-05-25 13:44
原帖由 DQP 于 2009-5-25 13:13 发表
这段代码本身没什么问题。  是不是你的Sybase:BD装得有问题。
这个文件的名字叫check_mssql.pl。
你是想连接sqlserver么。 连sqlserver的话还是推荐用ODBC。


恩 对 是我想让nagios做检测sqlserver的
在外国的一个网站看到的是这样的 Sybase:BD安装的也许真的有问题 因为我是强行安装的 make test没有过去
[root@nagios DBD-Sybase-1.07]# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/autocommit....dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-9
        Failed 8/9 tests, 11.11% okay
t/base..........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
t/exec..........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-22
        Failed 21/22 tests, 4.55% okay
t/fail..........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-12
        Failed 11/12 tests, 8.33% okay
t/login.........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-4
        Failed 3/4 tests, 25.00% okay
t/main..........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-33
        Failed 32/33 tests, 3.03% okay
t/multi_sth.....dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-43
        Failed 42/43 tests, 2.33% okay
t/nsql..........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-7
        Failed 6/7 tests, 14.29% okay
t/place.........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-13
        Failed 12/13 tests, 7.69% okay
t/thread........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
t/xblk..........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-62
        Failed 61/62 tests, 1.61% okay
t/xblob.........dubious                                                      
        Test returned status 0 (wstat 11, 0xb)
DIED. FAILED tests 2-11
        Failed 10/11 tests, 9.09% okay
Failed Test    Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/autocommit.t    0    11     9   16 177.78%  2-9
t/base.t          0    11    ??   ??       %  ??
t/exec.t          0    11    22   42 190.91%  2-22
t/fail.t          0    11    12   22 183.33%  2-12
t/login.t         0    11     4    6 150.00%  2-4
t/main.t          0    11    33   64 193.94%  2-33
t/multi_sth.t     0    11    43   84 195.35%  2-43
t/nsql.t          0    11     7   12 171.43%  2-7
t/place.t         0    11    13   24 184.62%  2-13
t/thread.t        0    11    ??   ??       %  ??
t/xblk.t          0    11    62  122 196.77%  2-62
t/xblob.t         0    11    11   20 181.82%  2-11
Failed 12/12 test scripts, 0.00% okay. 206/216 subtests failed, 4.63% okay.
make: *** [test_dynamic] Error 255
[root@nagios DBD-Sybase-1.07]#
作者: cobrawgl    时间: 2009-05-25 14:24
原帖由 ppiqq 于 2009-5-25 13:42 发表


cobrawgl大大 这个我真不会



你先用排除法,看看是哪段代码出问题了
作者: shaneqi    时间: 2009-05-25 14:47
标题: 回复 #4 Perl_Er 的帖子
程序core dump了?
作者: DQP    时间: 2009-05-25 15:01
先把DBD装好再说吧
作者: ppiqq    时间: 2009-05-25 15:08
标题: 回复 #12 DQP 的帖子
[root@nagios DBD-Sybase-1.07]# perl Makefile.PL
Sybase OpenClient 11.1.1 found.

By default DBD::Sybase 1.05 and later use the 'CHAINED' mode (where available)
when 'AutoCommit' is turned off. Versions 1.04 and older instead managed
the transactions explicitly with a 'BEGIN TRAN' before the first DML
statement. Using the 'CHAINED' mode is preferable as it is the way that
Sybase implements AutoCommit handling for both its ODBC and JDBC drivers.

Use 'CHAINED' mode by default (Y/N) [Y]:

Running in threaded mode - looking for _r libraries...
No thread-safe Sybase libraries found
The DBD::Sybase module need access to a Sybase server to run the tests.
To clear an entry please enter 'undef'
Sybase server to use (default: SYBASE):
User ID to log in to Sybase (default: sa):
Password (default: undef):
Sybase database to use on SYBASE (default: undef):

* Writing login information, including password, to file PWD.

Using DBI 1.604 (for perl 5.008008 on i386-linux-thread-multi) installed in /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI/
Writing Makefile for DBD::Sybase
[root@nagios DBD-Sybase-1.07]# make
gcc -c  -I/opt/sybase//include -DNO_THREADS  -I/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m32 -march=i386 -mtune=pentium4   -DVERSION=\"1.07\" -DXS_VERSION=\"1.07\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE"   Sybase.c
gcc -c  -I/opt/sybase//include -DNO_THREADS  -I/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m32 -march=i386 -mtune=pentium4   -DVERSION=\"1.07\" -DXS_VERSION=\"1.07\" -fPIC "-I/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE"   dbdimp.c
Running Mkbootstrap for DBD::Sybase ()
chmod 644 Sybase.bs
rm -f blib/arch/auto/DBD/Sybase/Sybase.so
gcc  -L/opt/sybase//lib -shared -L/usr/local/lib Sybase.o dbdimp.o  -o blib/arch/auto/DBD/Sybase/Sybase.so      \
   -L/opt/sybase//lib -lct -lcs -lsybtcl -lcomn -lintl -lblk -ldl -lm   \
  
chmod 755 blib/arch/auto/DBD/Sybase/Sybase.so
cp Sybase.bs blib/arch/auto/DBD/Sybase/Sybase.bs
chmod 644 blib/arch/auto/DBD/Sybase/Sybase.bs
Manifying blib/man3/DBD::Sybase.3
[root@nagios DBD-Sybase-1.07]# make install
Installing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/Sybase/Sybase.so
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Writing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/Sybase/.packlist
Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
[root@nagios DBD-Sybase-1.07]# cd ~

我安装的过程 貌似没错啊 我在一个网站找到的内容说的是直接make  没有报错 安装也能装上
作者: ppiqq    时间: 2009-05-26 09:59
标题: 回复 #14 ulmer 的帖子
[root@nagios ~]# perl -mDBI -le 'print DBI->connect("dbi:Sybase:server=192.168.3.135", "test", "test")'               
Segmentation fault
[root@nagios ~]#

大大 这是什么意思呢 难道是我的DBD::Sybase安装的有问题么 谢谢赐教
作者: cobrawgl    时间: 2009-05-26 13:13
原帖由 ppiqq 于 2009-5-26 09:59 发表
[root@nagios ~]# perl -mDBI -le 'print DBI->connect("dbi:Sybase:server=192.168.3.135", "test", "test"'               
Segmentation fault
[root@nagios ~]#

大大 这是什么意思呢 难道是我的DBD ...



哦,刚才没仔细看。

貌似你装的有问题

[ 本帖最后由 cobrawgl 于 2009-5-26 13:29 编辑 ]
作者: ppiqq    时间: 2009-06-01 10:21
??????????真的有问题么 汗颜 我重新再安装一下看看哈
作者: ppiqq    时间: 2009-06-01 11:13
标题: 回复 #14 ulmer 的帖子
大大 我从pbone上面下载了包 也都安装上面了 但是貌似我的而环境变量有问题啊 我应该怎么设置了 谢谢了
(发现这俩帖子的开始走到一起了   )
[root@nagios DBD-Sybase-1.07]# rpm -qa | grep freetds
freetds-devel-0.64-1.el4.rf
freetds-0.64-1.el4.rf
[root@nagios DBD-Sybase-1.07]# rpm -ql freetds-0.64-1.el4.rf
/etc/freetds.conf
/etc/locales.conf
/etc/pool.conf
/usr/bin/bsqldb
/usr/bin/datacopy
/usr/bin/defncopy
/usr/bin/freebcp
/usr/bin/tdspool
/usr/bin/tsql
/usr/lib/libct.so.4
/usr/lib/libct.so.4.0.0
/usr/lib/libsybdb.so.5
/usr/lib/libsybdb.so.5.0.0
/usr/lib/libtds.so.5
/usr/lib/libtds.so.5.0.0
/usr/lib/libtdsodbc.so.0
/usr/lib/libtdsodbc.so.0.0.0
/usr/lib/libtdssrv.so.2
/usr/lib/libtdssrv.so.2.0.0
/usr/share/doc/freetds-0.64
/usr/share/doc/freetds-0.64/AUTHORS
/usr/share/doc/freetds-0.64/BUGS
/usr/share/doc/freetds-0.64/COPYING
/usr/share/doc/freetds-0.64/COPYING.LIB
/usr/share/doc/freetds-0.64/ChangeLog
/usr/share/doc/freetds-0.64/NEWS
/usr/share/doc/freetds-0.64/README
/usr/share/doc/freetds-0.64/TODO
/usr/share/doc/freetds-0.64/api_status.txt
/usr/share/doc/freetds-0.64/bcp.txt
/usr/share/doc/freetds-0.64/bsqldb.txt
/usr/share/doc/freetds-0.64/cap.txt
/usr/share/doc/freetds-0.64/datacopy.txt
/usr/share/doc/freetds-0.64/defncopy.txt
/usr/share/doc/freetds-0.64/freebcp.txt
/usr/share/doc/freetds-0.64/getting_started.txt
/usr/share/doc/freetds-0.64/policy.txt
/usr/share/doc/freetds-0.64/tds.html
/usr/share/doc/freetds-0.64/tds_ssl.html
/usr/share/doc/freetds-0.64/tsql.txt
/usr/share/doc/freetds-0.64/userguide.sgml
/usr/share/man/man1/bsqldb.1.gz
/usr/share/man/man1/datacopy.1.gz
/usr/share/man/man1/defncopy.1.gz
/usr/share/man/man1/freebcp.1.gz
/usr/share/man/man1/tsql.1.gz
[root@nagios DBD-Sybase-1.07]# export SYBASE="/usr/lib"                 
[root@nagios DBD-Sybase-1.07]# perl Makefile.PL            
Can't find the lib directory under /usr/lib! at Makefile.PL line 113, <IN> line 44.
[root@nagios DBD-Sybase-1.07]#
作者: ppiqq    时间: 2009-06-01 12:03
有哪位大大能给出安装DBD::Sybase的详细过程么 多谢了

现在发现问题越来越多了
作者: ppiqq    时间: 2009-06-11 15:52
此贴解决了 安装了一个perl-php-sybase的rpm

作者: Perl_Er    时间: 2009-06-11 16:37
学习
作者: MMMIX    时间: 2009-06-11 16:43
原帖由 Perl_Er 于 2009-6-11 16:37 发表
学习

老这样灌水有意思么?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2