CakePHP支持DB2

研究了一个下午ThinkPHP2.0,终于弄明白了,却发现不支持DB2,有人说PDO可以用于连接DB2,我试过之后发现最新的ThinkPHP2.0的PDO驱动里面有很低级的bug,试了一晚上始终没有用PDO连上DB2。有可以用ThinkPHP+DB2开发的朋友请指教。

 

然后尝试CakePHP,下载最新的1.3发现里面没有DB2的驱动,去SVN地址check出来的代码是有的,放弃最新版,就用check出来的吧,版本号1.2.4.8284

我的配置是这样的,DB2安装在远程的服务器上,也是我们开发服务器,但是调试在本地。Apache+PHP+DB2。

参考http://krook.net/archives/180 database.php 配置,发现还是不可以,不知道是不是和我的环境有关。

还好可以trace到lib里面的PHP代码,看了看dbo_db2.php发现还有一个配置数组,还多了些参数:

 1       var   $_baseConfig   =   array (
 2           ' persistent '       =>   true ,
 3           ' login '           =>   ' db2inst1 ' ,
 4           ' password '           =>   '' ,
 5           ' database '           =>   ' cake ' ,
 6           ' schema '          =>   '' ,
 7           ' hostname '          =>   ' 127.0.0.1 ' ,
 8           ' port '              =>   ' 50001 ' ,
 9           ' encoding '          =>   ' UTF-8 ' ,
10           ' cataloged '          =>   true ,
11           ' autocommit '      =>   true
12      );

 

再往下看代码发现有两种连接数据库的办法:

 1           if  ( $config [ ' cataloged ' ]) {
 2               $this -> connection  =   $connect ( $config [ ' database ' ] ,   $config [ ' login ' ] ,   $config [ ' password ' ]);
 3          }  else  {
 4               $connString   =   sprintf (
 5                   " DRIVER={IBM DB2 ODBC DRIVER};DATABASE=%s;HOSTNAME=%s;PORT=%d;PROTOCOL=TCPIP;UID=%s;PWD=%s; " ,
 6                   $config [ ' database ' ] ,
 7                   $config [ ' hostname ' ] ,
 8                   $config [ ' port ' ] ,
 9                   $config [ ' login ' ] ,
10                   $config [ ' password ' ]
11              );
12               $this -> connection  =  db2_connect( $connString ,   '' ,   '' );
13          }

 

默认情况 $config['cataloged']为真,连接失败,将此值强制写入配置数据,搞定了,终于连上数据库了,呵呵,那就先用Cakephp玩玩吧。

贴出我的配置文件  database.php 给大家参考一下

 1       var   $default   =   array (
 2           ' driver '   =>   ' db2 ' ,
 3           ' persistent '   =>   false ,
 4           ' hostname '   =>   ' 123.456.789.012 ' ,
 5           ' login '   =>   ' db2inst1 ' ,
 6           ' password '   =>   ' password ' ,
 7           ' database '   =>   ' CAKE ' ,
 8           ' port '   => 50000 ,
 9           ' cataloged '   =>   false ,
10           ' prefix '   =>   '' ,
11      );

 

 注意:如果你的DB2和默认配置不一样的话,都要在这里把不一样的配置参数写出来。

 

你可能感兴趣的:(cakephp)