标签: dbd

如何在Strawberry Perl中安装DBD :: Oracle

我正在尝试使用Strawberry Perl中的CPAN shell 安装DBD :: Oracle.我最初遇到错误,因为Makefile找不到OCI库,所以我从Oracle安装了即时客户端.我认为这将解决这个问题,但现在我得到的错误和警告的大混合物中Oracle.h,dbdimp.h,Oracle.c,Oracle.xsi,和Oracle.xs.

有关如何进行的任何建议?我的计算机上现有的Oracle软件是否存在问题?我对Perl相当新,所以任何帮助都表示赞赏.

编辑 - 我将以下整个输出包括在内:

cpan> install DBD::Oracle
Database was generated on Fri, 04 Dec 2009 16:12:46 GMT
Running install for module 'DBD::Oracle'
Running make for P/PY/PYTHIAN/DBD-Oracle-1.23.tar.gz
Checksum for C:\strawberry\cpan\sources\authors\id\P\PY\PYTHIAN\DBD-Oracle-1.23.tar.gz ok
Scanning cache C:\strawberry\cpan\build for sizes
...............................................................-------------DONE

  CPAN.pm: Going to build P/PY/PYTHIAN/DBD-Oracle-1.23.tar.gz

Multiple copies of Driver.xst found in: C:/strawberry/perl/site/lib/auto/DBI/ C:\strawberry\perl\vendor\lib/auto/DBI/ at Makefile.PL line 37
Using DBI 1.609 (for perl …
Run Code Online (Sandbox Code Playgroud)

oracle perl dbi dbd strawberry-perl

11
推荐指数
1
解决办法
2万
查看次数

%ENV不起作用,我不能使用共享库

我不能%ENV在我的Perl脚本上使用var来使用Oracle库.

BEGIN {
    $ORACLE_HOME = "/usr/lib/oracle/10.2.0.3/client64";
    $LD_LIBRARY_PATH = "$ORACLE_HOME/lib";
    $ORACLE_SID="prod";
    $ENV{ORACLE_SID}=$ORACLE_SID;
    $ENV{ORACLE_HOME}= $ORACLE_HOME;
    $ENV{LD_LIBRARY_PATH}= $LD_LIBRARY_PATH;
};
Run Code Online (Sandbox Code Playgroud)

如果我打印$ENV{'ORACLE_HOME'},$ENV{'LD_LIBRARY_PATH'}一切似乎没问题但是,当我运行我的脚本时,我有错误:

install_driver(Oracle)失败:无法为模块DBD加载'/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so':: Oracle:libclntsh.so.10.1:无法打开共享对象文件:否这样的文件或目录位于/usr/lib64/perl5/DynaLoader.pm第200行.(eval 3)第3行编译在(eval 3)第3行的require中失败.也许在预期的地方没有安装所需的共享库或dll在persistence.perl第22行

在网上搜索我发现在Perl上设置env变量的正确方法是使用%ENVhash.

导出ORACLE_HOMELD_LIBRARY_PATH通过unix shell(export LD_LIBRARY_PATH=...)它可以正常工作.有什么建议?

oracle perl env dbi dbd

10
推荐指数
1
解决办法
6506
查看次数

Apache dbd内部错误:AH00629:无法连接到mysql

我正在尝试使用dbd和mysql作为Apache 2.4的身​​份验证.

当Apache启动时,我有这个错误:

[Tue May 12 13:07:18.789021 2015] [mpm_event:notice] [pid 10625:tid 140410697815936] AH00489: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Tue May 12 13:07:18.789118 2015] [core:notice] [pid 10625:tid 140410697815936] AH00094: Command line: '/usr/sbin/apache2'
[Tue May 12 13:07:18.789469 2015] [dbd:error] [pid 10628:tid 140410697815936] (20014)Internal error: AH00629: Can't connect to mysql: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[Tue May 12 13:07:18.789560 2015] [dbd:error] [pid 10628:tid 140410697815936] (20014)Internal error: AH00633: failed to initialise
[Tue May 12 13:07:18.790282 2015] [dbd:error] …
Run Code Online (Sandbox Code Playgroud)

mysql apache dbd basic-authentication

10
推荐指数
1
解决办法
2956
查看次数

DBI和DBD有什么区别?

有人可以了解一下DBI和DBD究竟是什么?什么时候应该使用一个和使用一个优于另一个的好处.

perl dbi dbd

8
推荐指数
3
解决办法
5077
查看次数

OSX v10.6.6上DBD :: MySQL的安装错误

我试图让DBD :: MySQL在Snow Leopard上工作(v10.6.6).操作系统附带的默认Perl版本是v5.10.0.由于我已经阅读了64位,我继续下载并安装了64位版本的MySQL(mysql-5.5.8-osx10.6-x86_64).

安装和设置MySQL顺利进行,这是我的配置和版本号供参考.

我使用CPAN下载DBI和DBD :: MySQL驱动程序.然后我:

  • 已安装DBI
  • 设置Makefile.PL
  • 从命令行执行make命令

Makefile.PL表示它将使用以下设置进行编译和测试:

I will use the following settings for compiling and testing:

  cflags        (mysql_config ) = -I/usr/local/mysql/include  -Os -g -fno-common -fno-strict-aliasing -arch x86_64
  embedded      (mysql_config ) = 
  libs          (mysql_config ) = -L/usr/local/mysql/lib -lmysqlclient   -lpthread
  mysql_config  (guessed      ) = mysql_config
  nocatchstderr (default      ) = 0
  nofoundrows   (default      ) = 0
  ssl           (guessed      ) = 0
  testdb        (default      ) = test
  testhost      (default      ) = 
  testpassword  (User's choice) …

mysql perl dbi dbd osx-snow-leopard

7
推荐指数
2
解决办法
6528
查看次数

OSX 10.9 Mavericks上Perl DBI/DBD的问题

升级到OSX Mavericks后,我无法运行DBI/DBD.

Perl和MySQL运行正常(我可以登录到mysql并访问我的表),但我的Perl脚本不再使用DBI,因为更新程序删除了我以前工作的所有Perl模块.

我使用CPAN重新安装了DBI和DBD :: mysql,它们将它们安装到/opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/.将模块(DBI,DBD和"auto"中的所有内容)复制到/Library/Perl/5.16/darwin-multi-2level/(因为cpan使用的目录不在@INC中)后,我的脚本返回内部服务器错误(甚至使用FatalsToBrowser).

Apache错误日志说:

dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle
Expected in: flat namespace

dyld: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle
Expected in: flat namespace
Premature end of script headers: test.pl
Run Code Online (Sandbox Code Playgroud)

这有什么问题?也许是因为我复制了文件?也许我应该强制CPAN直接安装到/Library/Perl/5.16/?我如何告诉CPAN这样做?

有任何想法吗?

macos perl dbi dbd osx-mavericks

7
推荐指数
1
解决办法
8474
查看次数

当使用Perl的DBD :: SQLite时,为什么SQLite为事务中的第二个查询提供"数据库被锁定"?

当使用Perl DBD :: SQLite时,SQLite是否存在已知问题,在单个事务中为第二个查询提供"数据库已锁定"错误?场景:Linux,Perl DBI,AutoCommit => 0,一个带有两个代码块的子例程(使用块来本地化变量名).在第一个代码块中,一个查询句柄由select()在select语句中创建,它被执行()并且块被关闭.第二个代码块是通过准备更新语句创建的另一个查询句柄,并且经常(30%的时间)SQLite/DBI在此阶段给出数据库锁定错误.我认为错误发生在prepare()期间而不是在execute()期间.

我的工作是在第一次查询后提交.(在第一个查询上调用完成没有帮助).我不喜欢有几个与优雅和表现有关的理由.Postgres作为数据库,原始代码已经运行了很多年.我试过sqlite_use_immediate_transaction没有效果.

在所有其他情况下,我发现SQLite表现得非常好,所以我怀疑这是DBD驱动程序中的疏忽,而不是SQLite的问题.遗憾的是,我目前的代码是一大堆脚本和模块,所以我没有一个简短的单个文件测试用例.

sqlite perl prepared-statement dbi dbd

6
推荐指数
1
解决办法
9971
查看次数

通过Perl连接到Teradata

有人有这个成功吗?网上没有大量的参考资料,我已经用尽了谷歌上的所有相关结果.这是我的脚本:

#!/usr/bin/perl

use DBI;
use DBD::ODBC;

$user = "user";
$pw = "pw";
$ip = "192.168.1.0"

#DBI->trace(DBD::ODBC->parse_trace_flags('odbconnection'));

#my $connect_attrs = { PrintError => 0, RaiseError => 1, AutoCommit => 1 };

my $dbh = DBI->connect("dbi:ODBC:$ip", $user, $pw);
Run Code Online (Sandbox Code Playgroud)

错误消息:

DBI connect('192.168.1.0','user',...) failed: (no error string) at ./teradata.pl line 13
Run Code Online (Sandbox Code Playgroud)

注释掉的两行是我之前无法尝试连接数据库的遗留问题.

更新:以前是我使用DBD模块所做的努力.

#!/usr/bin/perl

use DBI;

$user = "xxxx";
$pw = "xxxx";

my $dbh = DBI->connect("dbi:Teradata:tdsn", $user, $pw);
Run Code Online (Sandbox Code Playgroud)

错误:

DBI connect('tdsn','xxxx',...) failed: Unable to get host address. at ./teradata.pl line 12
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

#!/usr/bin/perl …
Run Code Online (Sandbox Code Playgroud)

sql perl odbc dbd teradata

6
推荐指数
1
解决办法
4035
查看次数

如何在循环中更新SELECT返回的行?

我在SQL SELECT语句返回的行上有一个循环,并且在对行的数据进行一些处理之后,我有时想要更新行的值.循环体中的处理非常重要,我无法在SQL中编写它.当我尝试为所选行执行UPDATE时,我得到一个错误(在Perl的DBD :: SQLite :: st执行失败:数据库表被锁定).是否有可读,高效且便携的方式来实现我想要做的事情?如果不这样做,是否有DBD或SQLite特定的方法呢?

显然,我可以在单独的数据结构中推送更新并在循环之后执行它们,但是我讨厌代码看起来那样.

如果您有兴趣,这里是相应的Perl代码.

my $q = $dbh->prepare(q{
  SELECT id, confLoc FROM Confs WHERE confLocId ISNULL});
$q->execute or die;
my $u = $dbh->prepare(q{
  UPDATE Confs SET confLocId = ? WHERE id = ?});
while (my $r = $q->fetchrow_hashref) {
    next unless ($r->{confLoc} =~ m/something-hairy/);
    next unless ($locId = unique_name_state($1, $2));
    $u->execute($locId, $r->{id}) or die;
}
Run Code Online (Sandbox Code Playgroud)

sql sqlite perl dbd

5
推荐指数
1
解决办法
2005
查看次数

在OSX 10.11上安装DBD :: MySQL时出错-无法链接/包含C库'',正在中止

强文本

通过自制软件更新perl之后,我通过cpanm安装了dbd :: mysql安装程序,结果是

记录错误:我将使用以下设置进行编译和测试:

cflags        (mysql_config) = -I/usr/local/Cellar/mysql-connector-
c/6.1.9/include
embedded      (guessed     ) =
ldflags       (guessed     ) =
libs          (mysql_config) = -L/usr/local/Cellar/mysql-connector-
c/6.1.9/lib -l
mysql_config  (guessed     ) = mysql_config
nocatchstderr (default     ) = 0
nofoundrows   (default     ) = 0
nossl         (default     ) = 0
testdb        (default     ) = test
testhost      (default     ) =
testpassword  (default     ) =
testport      (default     ) =
testsocket    (default     ) =
testuser      (guessed     ) = root
Run Code Online (Sandbox Code Playgroud)

强文本

要更改这些设置,请参见“ perl Makefile.PL --help”和“ perldoc DBD :: mysql :: …

mysql macos perl homebrew dbd

5
推荐指数
3
解决办法
1936
查看次数