Magento 学习笔记 (六) 高级Magento模型

来源:互联网 发布:如何禁止程序访问网络 编辑:程序博客网 时间:2024/04/30 15:41

如何解决 createEntityTables: can't create table ?

学习这一章,在创建数据表的时候

$installer->createEntityTables( 

    $this->getTable('helloworld-eav/blogpost') 

);

碰到了一个问题: createEntityTables: can't create table 

这是为什么呢?

怎么解决呢?

首先来调试一下createEntityTables这个函数。那么这函数在哪呢?

发现它是属于$installer的,咋们 在 mysql4-install-0.1.0.php文件中 var_dump($installer),然后刷新一下网页

发现 $installer 是 Mage_Eav_Model_Entity_Setup 的对象,咋们在 app\code\core\Mage\Eav\Model\Entity\Setup.php文件中,查找 ‘createEntityTables’,在末尾可以看到:


1366行 :Zend_Debug::dump 是我加的,为了显示更加详细的错误信息,刷新网页:

User Error: DDL statements are not allowed in transactions

原来mysql 是不支持DDL事务回滚的。 那么我们怎么办呢?

我们可以自己写一个createEntityTables函数,覆盖原有的createEntityTables的函数。

复制原有createEntityTables函数,将上面图片中的代码 1359行、1367行和1368行注释掉,黏贴到 /app/code/local/App/Helloworld/Model/Entity/Setup.php文件中。然后刷新网页

http://127.0.0.1/Magento/helloworld/blog/eavRead/id/1

,可以看到网页中终于出现期待已久的

Loading the blogpost with an ID of 1 

array(0) { }








原创粉丝点击