xuxiaohui9216 发表于 2016-11-18 07:48:45

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和默认配置不一样的话,都要在这里把不一样的配置参数写出来。
页: [1]
查看完整版本: CakePHP支持DB2