免费注册 查看新帖 |

Chinaunix

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

如何修改 perl DBI 读取mysql.sock的存储位置! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-13 11:30 |只看该作者 |倒序浏览
各位朋友,大家好,我在运行一个PERL脚本的时候,出现以下错误:
DBI connect('database=storage;host=localhost','user',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at /usr/local/centreon/bin/nagiosPerfTrace line 79

由于我的MYSQL是自己手动编译的,所以sock位置不再 '/var/lib/mysql/mysql.sock'  位置,而我对PERL DBI 也并不是很熟,所以我还不知道去哪里修改这个文件地址。

当然,脚本第79行就免了,那是调用的一个公共类。

希望有熟悉的朋友,能给我指点一二,非常感谢!

论坛徽章:
0
2 [报告]
发表于 2009-10-13 11:45 |只看该作者
原帖由 net17sharplau 于 2009-10-13 11:30 发表
各位朋友,大家好,我在运行一个PERL脚本的时候,出现以下错误:
DBI connect('database=storage;host=localhost','user',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/ ...


你要修改/etc/my.cnf,而不是修改perl script.

论坛徽章:
0
3 [报告]
发表于 2009-10-13 13:57 |只看该作者
非常感谢!
但是 my.cnf  我无法修改!   因为其它很多应用指定的  都是我编译的路径,  不然我也改了!

论坛徽章:
0
4 [报告]
发表于 2009-10-13 14:07 |只看该作者
原帖由 net17sharplau 于 2009-10-13 13:57 发表
非常感谢!
但是 my.cnf  我无法修改!   因为其它很多应用指定的  都是我编译的路径,  不然我也改了!


那就在connect时用TCP socket不要用Unix socket咯。
把host=localhost改成host=127.0.0.1或者host=12.34.56.78(服务器的IP)

论坛徽章:
0
5 [报告]
发表于 2009-10-13 14:34 |只看该作者
恩!!  这是个办法,我先试试看!

论坛徽章:
0
6 [报告]
发表于 2009-10-13 16:32 |只看该作者
谢谢!  这个问题  已经解决了!
  我使用 ln -s  做一个软连接这个问题 可以解决    用tcp socket 也可以解决!

论坛徽章:
0
7 [报告]
发表于 2011-07-20 03:56 |只看该作者
挖个坟。刚才碰到这个问题。能指定sock的位置

#!/usr/bin/perl

use strict;
use warnings;

use DBI;
my $dbh = DBI->connect('DBI:mysql:ts_zabbix;mysql_socket=/tmp/mysql.sock', 'zabbix', '密码'
               ) || die "Could not connect to database: $DBI::errstr";
# (insert query examples here...)
$dbh->disconnect();

论坛徽章:
0
8 [报告]
发表于 2011-07-20 11:43 |只看该作者
#!/usr/bin/perl

use strict;
use warnings;

use DBI;
my $dsn = "DBI:mysql:ts_zabbix;mysql_socket=/tmp/mysql.sock";
my $dbh = DBI->connect($dsn, 'zabbix', '密码'
               ) || die "Could not connect to database: $DBI::errstr";
# (insert query examples here...)

my $sql = qq{select hostid from hosts};
my $sth=$dbh->prepare($sql);
$sth->execute();
#$sth->finish();
$dbh->disconnect();

提示
DBI::db=HASH(0xca77b0)->disconnect invalidates 1 active statement handle (either destroy statement handles or call finish on them before disconnecting) at 2.pl line 24.

如果打开了
#$sth->finish();的注释
什么也不显示。
lilongsy 该用户已被删除
9 [报告]
发表于 2011-07-20 13:26 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2011-10-12 17:01 |只看该作者
回复 7# laohuanggua


    兄弟是不是在研究zabbix啊,我也是啊。从09年开始的。可否交流一下啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP