2012-08-14 95 views
2

我遵循:http://framework.zend.com/manual/en/learning.quickstart.create-model.htmlzend Framework quickstart表必須有一個主鍵,但沒有找到

在問題發生之後繼續打牆。我現在一個是以下錯誤:

An error occurred 

Application error 

Exception information: 

Message: A table must have a primary key, but none was found 

Stack trace: 

#0 C:\wamp\www\zendtest\quickstart\library\Zend\Db\Table\Abstract.php(982): Zend_Db_Table_Abstract->_setupPrimaryKey() 
#1 C:\wamp\www\zendtest\quickstart\library\Zend\Db\Table\Select.php(100): Zend_Db_Table_Abstract->info() 
#2 C:\wamp\www\zendtest\quickstart\library\Zend\Db\Table\Select.php(78): Zend_Db_Table_Select->setTable(Object(Application_Model_DbTable_Guestbook)) 
#3 C:\wamp\www\zendtest\quickstart\library\Zend\Db\Table\Abstract.php(1018): Zend_Db_Table_Select->__construct(Object(Application_Model_DbTable_Guestbook)) 
#4 C:\wamp\www\zendtest\quickstart\library\Zend\Db\Table\Abstract.php(1326): Zend_Db_Table_Abstract->select() 
#5 C:\wamp\www\zendtest\quickstart\application\models\GuestbookMapper.php(58): Zend_Db_Table_Abstract->fetchAll() 
#6 C:\wamp\www\zendtest\quickstart\application\controllers\GuestbookController.php(14): Application_Model_GuestbookMapper->fetchAll() 
#7 C:\wamp\www\zendtest\quickstart\library\Zend\Controller\Action.php(516): GuestbookController->indexAction() 
#8 C:\wamp\www\zendtest\quickstart\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('indexAction') 
#9 C:\wamp\www\zendtest\quickstart\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#10 C:\wamp\www\zendtest\quickstart\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch() 
#11 C:\wamp\www\zendtest\quickstart\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() 
#12 C:\wamp\www\zendtest\quickstart\public\index.php(26): Zend_Application->run() 
#13 {main} 
Request Parameters: 

array (
    'controller' => 'guestbook', 
    'action' => 'index', 
    'module' => 'default', 
) 

但我相信我的表有表的主鍵碼:

CREATE TABLE guestbook (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    email VARCHAR(32) NOT NULL DEFAULT '[email protected]', 
    comment TEXT NULL, 
    created DATETIME NOT NULL 
); 

CREATE INDEX "id" ON "guestbook" ("id"); 

不明白爲什麼得到錯誤

回答

1

在Zend框架所有表都應該有主鍵列。在你的模型中,你應該設置主列的名字。

例如,表用戶:

class Application_Model_TableUser extends Zend_Db_Table_Abstract 
{ 
    protected $_name = 'user'; // table name 
    protected $_primary = 'id'; // primary column name 
} 
+0

我:類Application_Model_DbTable_Guestbook擴展Zend_Db_Table_Abstract { 保護$ _name = '留言'; 保護$ _primary = 'ID'; } – 2012-08-14 14:57:12

+0

對不起是我加入這個但這導致一個新的錯誤見問題http://stackoverflow.com/questions/11955062/primary-key-columns-id-are-not-columns-in-this-表 – 2012-08-14 14:58:59

0

我得到了同樣的錯誤。我發現,那Zend的緩存數據庫的元數據(由於性能原因很明顯)。在我的情況下,我放棄並創建了一個同名的表。新表有一個主列,而舊的一個都沒有。刪除Zend緩存解決了我的問題。

相關問題