2013-01-04 30 views
0

我總是使用Application_Model_DbTable來處理數據庫,但是我使用了MySql。我像這樣配置我的application.ini:爲postgres配置zend應用程序

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的standart函數,如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)並且表中沒有新的插入, 當我嘗試fetchAll在db表中,我得到應用程序錯誤。

回答

0

解決了問題! 如何? 我在公共/ index.php文件,打開了發展模式:

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

被證明錯誤,有沒有在我的表Prymary關鍵。我用SQl添加了它,並且它是!一切正常!所以這種將Zend連接到PostgreSQL的方式是完全正確的!