zend-framework - zend Framework quickstart表必须具有主键,但未找到任何主键

标签 zend-framework primary-key wamp

我正在关注:http://framework.zend.com/manual/en/learning.quickstart.create-model.html

不断遇到问题。我当前的错误是以下错误:

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 'noemail@test.com',
    comment TEXT NULL,
    created DATETIME NOT NULL
);

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


不明白为什么会出错

最佳答案

在Zend Framework中,所有表都应具有主键列。在模型中,应设置主列的名称。

例如,表用户:

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

关于zend-framework - zend Framework quickstart表必须具有主键,但未找到任何主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953974/

相关文章:

c# - 如何在 Entity Framework 代码优先数据库中手动设置实体主键?

mysql - 在网站系统的许多表中使用电子邮件地址作为主键是一种好习惯吗?

php - 如何更改 WAMP 中 phpMyAdmin 中显示的语言?

windows - php composer.phar 更新不适用于 Symfony 安装

php - 从 Linux 服务器上的 Zend Framework 连接外部 MS SQL DB

php - 无法从自定义 Magento 模块将数据保存在 MySQL 中

SQL Server : arbitrary auto-increment of primary key

WampServer 3 在线禁止

php - Zend Framework XML-RPC 服务器的身份验证方法

php - CSS 和 Javascript 汇总文件