4

Magento 1.7.0.0でカスタムエンティティを設定しようとしていますが、それに関するalan stormsの記事に従って、この単純なインストールスクリプトを使用すると、「テーブルを作成できません:eavblog_posts」と表示されます。

私のインストールスクリプトは非常に単純で、次のようになります。

<?php
$installer = $this;
$installer->addEntityType('complexworld_eavblogpost',
Array(
'entity_model'=>'complexworld/eavblogpost',
'attribute_model'=>'',
'table'=>'complexworld/eavblogpost',
'increment_model'=>'',eav/entity_increment_numeric
'increment_per_store'=>'0'
));
$installer->createEntityTables(
$this->getTable('complexworld/eavblogpost')
);

インストールスクリプトを機能させるにはどうすればよいですか?これは既知のMagentoのバグですか?

4

2 に答える 2

5

createEntityTables()私の場合、問題はMagento 1.7/1.12のメソッドのバグによるものでした

このバグ レポートへの回答で、Magento チームは、lib/Varien/Db/Adapter/Pdo/Mysql.php の 417 行目をコメント アウトすることを推奨しています。

$this->_checkDdlTransaction($sql);

代わりに、Zachary Schuessler の投稿のアドバイスに従うことをお勧めします。

1)createEntityTables()メソッドを独自のファイル(Your/Module/Model/Resource/Setup.php)にコピーし、トランザクションメソッドをコメントアウトします...

また

2) トランザクションを維持するために抽象化されたクエリを書く:

// Example of MySQL API
/**
 * Create table array('catalog/product', 'decimal')
 */
$table = $installer->getConnection()
    ->newTable($installer->getTable(array('catalog/product', 'decimal')))
    ->addColumn('value_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
        'identity'  => true,
        'nullable'  => false,
        'primary'   => true,
        ), 'Value ID')
    ->addColumn(...
于 2013-03-29T08:32:14.697 に答える
1

まず、この行は間違っています。

'increment_model'=>'',eav/entity_increment_numeric

引用符で囲む必要があります。

最新版のインストーラー機能に不具合があることをご了承ください。

phpMyAdmin などを使用してデータベースにアクセスし、テーブルが既に存在するかどうかを確認します。存在する場合は、それらを削除してください。また、core_resource 内のモジュールのレコードを削除します。

再試行。

次に、頭のてっぺんから思い出せないステップがあります(便利なことはわかっていますが、今夜はそれを思い出して編集します)。

テーブルが作成されたら、型テーブル (int、text char など) の外部キーの割り当てを見ると、entity_id フィールドが eav_entity.entity_id を見ていることがわかります。これは eavblogpost_entity テーブルに変更する必要があります。

また、すべての外部キー参照が INT(10) である場合、eavblogpost_entity.entity_id フィールドが INT(11) であることに気付くかもしれません。eavblogpost_entity.entity_id フィールドを手動で INT(10) に変更します。

このすべてを回避する唯一の方法は、createEntityTables() 関数を機能する関数でオーバーライドするか、すべてのテーブルを手動で作成することです。これは、その部分を支援するための優れたリソースですhttp://inchoo.net/ecommerce/magento/creating-an-eav-based-models-in-magento/

これらすべてをいじってみると、私が忘れていた、やらなければならないステップに出くわすことでしょう。ごめん!

于 2012-05-09T07:31:36.390 に答える