为postgres配置zend应用程序

时间:2013-01-04 19:49:01

标签: sql postgresql zend-framework zend-db-table

我总是使用Application_Model_DbTable来处理数据库,但是我使用了MySql。我像这样配置了我的application.ini:

resources.db.adapter = PDO_MYSQL 
resources.db.params.host = localhost
resources.db.params.username = admin    
resources.db.params.password = 12345
resources.db.params.dbname = daedu
resources.db.params.charset = utf8

并使用dbtable的标准函数,如fetchAll或insert。 如何获得相同的结果,但使用PostgreSQL?

我已经安装了PostgreSQL并通过pgAdmin III我已经创建了数据库和表。问题是如何使用db-table将它连接到Zend?

我这样配置:

resources.db.adapter = PDO_PGSQL 
resources.db.params.host = localhost
resources.db.params.port = 5432
resources.db.params.username = postgres 
resources.db.params.password = 12345
resources.db.params.dbname = postgres
resources.db.params.charset = utf8

我通过这样的dbtable来处理它:

class Application_Model_DbTable_Postrgres extends Zend_Db_Table_Abstract
{
    protected $_name = 'postgres';

    public function insert(){
        $data = array(
            'name' => "dan"
        );

        $this->insert($data);
    }
}
控制器中的

$f = new Application_Model_DbTable_Postrgres();
$f->insert();

但是页面没有打开(错误是:net :: ERR_EMPTY_RESPONSE)并且表中没有新插入, 当我在db表中尝试fetchAll时,我收到应用程序错误。

2 个答案:

答案 0 :(得分:1)

resources.db.adapter = PDO_PGSQL

您需要安装PDO_PGSQL

答案 1 :(得分:1)

解决了问题! 怎么样? 我打开了public / index.php文件中的开发模式:

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));

显示错误表示我的表中没有Prymary Key。我用SQl添加它,并且它是!一切正常!所以这种将Zend连接到PostgreSQL的方式是完全正确的!