免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7361 | 回复: 7
打印 上一主题 下一主题

数据库连接的 服务名,用户名,密码都没错啊 ,为什么会连接失败呢 郁闷了!! [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-14 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 17:43 |只看该作者 |倒序浏览
执行一个perl脚本 (pear.conf是配置文件 记载了数据库连接的参数)
  1. ./apple.pl -c pear.conf
复制代码
结果提示
  1. DBI connect('server=S10;charset=cp936','sa',...) failed: Server message number=4002 severity=14 state=1 line=0 server=ase1254lnx64 text=Login failed.
  2. OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (34)
  3. Server S10, database
  4. Message String: Adaptive Server connection failed
  5. at ./ying.pl line 1112
复制代码
===============
因为程序apple.pl  里面引用了程序“ying.pl ”
  1. # 函数文件引用声明
  2. my $strPath = &dirname($0);
  3. my($strBaseName,$strDirName) = &fileparse($0);
  4. require $strDirName . ‘ying.pl’ ;
复制代码
--呵呵 有点复杂吧

看到错误信息 我就定位到了 文件ying.pl 的第1112行 位置附近
  1. if ( $DbType =~ /sybase/i ) {
  2.     print "连接 sybase 数据库 $host : $dbname ... \n";
  3.     if ( $dbh = DBI->connect("DBI:Sybase:server=$host;charset=$charset",$username,$passwd) ) {
  4.       print "连接 sybase 数据库 $host 成功! \n";
  5.       if ( $dbname ne '' ) {
  6.         if ( $dbh->do("use $dbname") ) {
  7.           print "转换为数据库 $dbname 成功! \n";
  8.         } else {
  9.           print "Couldn't Select Database : $dbname \n";
  10.           $dbh = undef;
  11.         }
  12.       }
  13.     } else {
复制代码
--唉 按提示说 应该是数据库连接不上
但是脱离这个程序 我使用配置文件里同样的参数去连接数据库 是连得上的!!

现在我实在想不出可能的原因会出在哪里?大家能看出想出可能存在的原因吗??

都不知道应该从哪个方向下手了》。


数据库连接的 服务名,用户名,密码都没错啊 ,为什么会连接失败呢 郁闷了!!

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-14 06:20:00
2 [报告]
发表于 2011-12-23 17:47 |只看该作者
貌似说的不是很清楚;
就是:有个程序叫apple.pl ,它引用了文件ying.pl,
执行apple.pl里面因为要连接数据库 因此需要传入参数 ,因此写了个配置文件 叫pear.conf,
pear.conf里面记载了数据库的服务名 用户名 密码等;
但是执行
01../apple.pl -c pear.conf
时,报错说连接数据库失败 定位信息说是在ying.pl
但是本人又找不出错误原因

论坛徽章:
0
3 [报告]
发表于 2011-12-25 23:17 |只看该作者
“--唉 按提示说 应该是数据库连接不上
但是脱离这个程序 我使用配置文件里同样的参数去连接数据库 是连得上的!!”

那你有没有想过是这个project 环境有问题,例如你试试注释几行关键的地方,少引用几个包,然后再运行连接,有可能是包冲突阿什么的

论坛徽章:
0
4 [报告]
发表于 2011-12-26 09:03 |只看该作者
看不懂。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-14 06:20:00
5 [报告]
发表于 2011-12-26 10:40 |只看该作者
查了,密码错误!
其实输入的密码没错,是程序获取密码截取长度不够啊
我的密码是123456789,结果通过把打印出来发现密码变成1234567,
明显变量长度不够
但是perl里面又没有可以修改变量长度的 我再次懵了!!

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
6 [报告]
发表于 2011-12-26 11:41 |只看该作者
肯定是你代码的问题,看看密码是怎么来的,有没有相关的处理

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-14 06:20:00
7 [报告]
发表于 2011-12-26 11:51 |只看该作者
  1. # 函数文件引用声明
  2. my $strPath = &dirname($0);
  3. my($strBaseName,$strDirName) = &fileparse($0);
  4. require $strDirName . 'my_func.pl';

  5. our %opt;
  6. getopts("a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:",\%opt);
  7. $opt{c} or usage();

  8. my %var;
  9. if (!((-e $opt{c}) && (-f $opt{c}))) {
  10.   print("配置文件:$opt{c} 不存在!\r\n");
  11.   exit;
  12. }
  13. open(CONF_FILE,$opt{c}) || die("打开配置文件$opt{c}失败!");
  14. my $strLine = "";
  15. while ($strLine = <CONF_FILE>) {
  16.   if ( $strLine =~ /^\s*(\S+)\s*=\s*([^#\n]+)/ ) {
  17.     $var{$1} = trim($2);
  18.   }
  19. }
  20. close(CONF_FILE);

  21. $var{DomainId} and $var{PrgName}
  22. and $var{DBType} and $var{DBServer} and $var{DBName} and $var{DBUser} or usage2();

  23. my $DomainId             =        $var{DomainId};
  24. my $PrgName              =        $var{PrgName};
  25. my $FileType             =        $var{FileType};

  26. my $DBType               =        $var{DBType};
  27. my $DBServer             =        $var{DBServer};
  28. my $DBPort               =        $var{DBPort};
  29. my $DBName               =        $var{DBName};
  30. my $DBUser               =        $var{DBUser};
  31. my $DBPasswd             =        $var{DBPasswd};
  32. my $DBCharSet            =        $var{DBCharSet};
复制代码
密码从配置文件读取而来 my $DBPasswd             =        $var{DBPasswd};
但是具体就不懂了 大虾啊 你要救救我啊

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
8 [报告]
发表于 2011-12-26 14:11 |只看该作者
close(CONF_FILE);后print Dumper \%var;看看密码是否跟文件一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP