Apache通过mod_dbd连接数据库

Apache通过mod_dbd可以直接连接以下的数据库:
  MySQL
  PostgreSQL
  Oracle
也可以通过ODBC连接其他数据库。

 

具体步骤:

  1.安装mod_dbd模块(apsx mod_dbd.c 具体方法另行说明)

  2.配置文件设定(httpd.conf)

    DBDriver pgsql(我的是pgsql数据库)
    DBDParams "host=localhost port=5432 user=XXX password=XXX dbname=XXX"
    DBDPersist ON
    DBDKeep 3
    DBDMax 10
    DBDMin 1
    DBDExptime 60

 

  3.重新启动Apache

 

   如果Apache正常启动的话,那么恭喜你,数据库可以用了(废话,呵呵)

   如果不能启动的话,那就悲剧了。下面我说一下如何让悲剧变成喜剧啊!

 

   如果出现了,DBD: Can't load driver file apr_dbd_pgsql.so这个错,那说明你Apache的lib里面没有安装apr_dbd_pgsql.so。别不相信, 打开apache/lib/apr-util-1,你发现里面有apr_dbd_sqlite.so,但是没有我们想要的*.so,为什么呢?

   因为Apache默认的是使用 sqlite数据库。如果想使用我们需要的数据库怎么办?

  答案,修改配置文件掰!

   打开源代码的

      httpd-2.2.6/srclib/apr-util/
     # ./buildconf(执行以下这个文件,接着当前目录下的include中会多出一个apu.h来)

       打开
      # vi include/apu.h

    把你想要的数据库改称1,

       #define APU_HAVE_MYSQL 0  ---〉  #define APU_HAVE_MYSQL 1

    接着安装Apache,apr_dbd_sqlite.so就会被安装了。

 

   假如你已经安装了Apache,也不用卸载重新安装,只需把apr_dbd_sqlite.so添加安装一下就行了。

   具体做法:

   1.添加apr

     # cd ../apr
     # ./configure --prefix=/usr/local/apache2 --with-mysql=/usr/local/mysql
     # make
     # make install
  2.添加apr-util

     # cd ../apr-util
     # ./configure --prefix=/usr/local/apache2 /
              --with-mysql=/usr/local/mysql /
              --with-apr=/usr/local/apache2
     # make

     # ls -la dbd (确认一下apr_dbd_mysql.o是不是生成了)

     # make install

 

 ok,在重新启动Apache试试。

 

另外可能会碰到 Internal error: DBD: Can't connect to pgsql 这种错误

具体解决办法是修改mod_dbd.c,让他把详细信息打出来

修改范围内容,

 -- modules/database/mod_dbd.c (revision 609791)
+++ modules/database/mod_dbd.c (working copy)
[at] [at] -459,6 +459,7 [at] [at]
apr_pool_t *rec_pool, *prepared_pool;
ap_dbd_t *rec;
apr_status_t rv;
+ const char *err = "";

rv = apr_pool_create(&rec_pool, pool);
if (rv != APR_SUCCESS) {
[at] [at] -502,12 +503,12 [at] [at]
return rv;
}

- rv = apr_dbd_open(rec->driver, rec->pool, cfg->params,
&rec->handle);
+ rv = apr_dbd_open_ex(rec->driver, rec->pool, cfg->params,
&rec->handle, &err);
if (rv != APR_SUCCESS) {
switch (rv) {
case APR_EGENERAL:
ap_log_error(APLOG_MARK, APLOG_ERR, rv, cfg->server,
- "DBD: Can't connect to %s", cfg->name);
+ "DBD: Can't connect to %s: %s", cfg->name,
err);
break;
default:
ap_log_error(APLOG_MARK, APLOG_ERR, rv, cfg->server,

重新编译,启动apache,看log,

 

我遇到过这种错误:

   [Mon Jun 20 20:13:16 2011] [error] (20014)Internal error: DBD: Can't connect to pgsql ,FATAL:  sorry, too many clients already/n

 

 是因为我的

    DBDMax 500
    DBDMin 100

 设置的太大了,把它改小一点就OK了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要下载DBD-Oracle,你可以按照以下步骤进行操作: 首先,你需要访问Perl的CPAN(Comprehensive Perl Archive Network)网站,该网站是一个Perl模块的维护和分发知名网站。 在CPAN网站的搜索框中,输入“DBD-Oracle”。然后,点击“搜索”按钮,以查找DBD-Oracle模块。 在搜索结果中,选择适当的DBD-Oracle模块版本,然后点击模块名称,进入模块页面。 在模块页面中,你可以找到模块的基本信息、依赖关系、使用文档等。确保你选择与你的Perl版本和操作系统相匹配的版本。 一旦你确认了版本,你可以找到一个“下载”按钮或下载链接,点击它来下载DBD-Oracle模块的压缩文件。 下载完成后,解压缩压缩文件到你选择的目录中。 进入解压缩后的目录,你将找到一个名为“Makefile.PL”的文件。使用文本编辑器打开该文件,并根据需要进行任何自定义配置。 保存并退出文件后,打开终端或命令提示符窗口,并导航到DBD-Oracle模块目录。 在命令提示符下,运行以下命令来安装DBD-Oracle模块: ``` perl Makefile.PL make make install ``` 等待安装过程完成,如果没有错误,说明DBD-Oracle模块已经成功安装。 最后,你可以在你的Perl脚本中使用DBD-Oracle模块,通过连接到Oracle数据库并执行SQL查询等操作。 希望以上步骤对你有所帮助,祝你顺利下载和安装DBD-Oracle模块!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值