Perl中的Informix错误:ISAM:107:ISAM错误:记录已锁定。在test_db_connectivity.pl第14行

时间:2015-08-28 19:29:53

标签: perl informix

我正在尝试在生产环境中连接到我们的数据库。我收到 107 ISAM错误:记录被锁定。我已经检查了它可能是什么的各种文章,但没有运气。我用DBA仔细检查了数据库详细信息,信息是正确的。

仅供参考 - 我收到的“记录被锁定”错误之前的第一个错误是 SQL:-931:无法在/ etc / services中找到web1_tcp service / tcp服务。在test_db_connectivity.pl第13行。。我与我们的SA一起工作,以便进入,并且不再出现。任何人都可以提供有关ISAM 107错误的任何指导?我的连接字符串错了吗?不应该有锁,因为我甚至没有打开与数据库的连接。

test_db_connectivity.pl:

#/usr/bin/perl -w

use DBI;
use strict;
use DBI qw(:sql_types);
use DBD::Informix qw(:ix_types);

    my $driver = "Informix";
    my $database = "web1";
    my $dsn = "DBI:$driver:dbname=$database";
    my $userid = "user";
    my $password = "password";
    print "I got this far!\n";
    my $dbh = DBI->connect($dsn, $userid, $password, {RaiseError => 1}) or      die $DBI::errstr;
    print "Opened db successfully\n";
    $dbh->disconnect();

设置了一些变量:

export INFORMIXDIR=/opt/informix

export   LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INFORMIXDIR/lib:$INFORMIXDIR/lib/cli:$INFORMIXDIR/lib/esql:$INFORMIXDIR/lib/tools

export INFORMIXSERVER=web1

INFORMIX SQLHOSTS FILE:

#dbservername nettype hostname servicename options

web1 onsoctcp 10.199。***。* web1dev1_tcp

etc / services FILE:

web1dev1_tcp 1533 / tcp#分配给数据库的端口

virtual-places 1533 / tcp #Virtual Places Software

web1dev1_tcp 1533 / udp#分配给数据库的端口

1 个答案:

答案 0 :(得分:1)

在Linux上,出现系统错误107:

107 (ENOTCONN): Transport endpoint is not connected

很难将其与C-ISAM错误107(数字相同)区分开来。但是,在上下文中,我认为ENOTCONN比

更容易成为问题
ISAM ERROR 107: record is locked.

我发现你在$dsn中使用了DBD :: Informix不测试的符号:

my $dsn = "DBI:$driver:dbname=$database";

dbname=部分不正确。你应该使用:

my $dsn = "DBI:$driver:$database";

请注意,DBI规范(我上次查看时)表示驱动程序名称后面的内容是特定于驱动程序的。您可以提交增强请求。

但是,在我的工作系统上,当我使用dbname=stores表示法时,我得到的错误是:

DBI connect('dbname=stores', '',...) failed: SQL: -354: Incorrect database or cursor name format. at dbname-dsn.pl line 8.

那是完全不同的。你说你得到了:

  

SQL:-931:无法在/ etc / services中找到web1_tcp service / tcp服务。在test_db_connectivity.pl第13行

错误消息非常明确。您需要/etc/services中的条目,例如:

web1_tcp    9088/tcp

目前,您没有这样的条目,因此甚至没有尝试连接,更不成功。