Magento 2 addIndex

时间:2018-07-31 03:00:13

标签: magento magento2.2

我是Magento的新用户,正在尝试使用UpgradeSchema.php将基于2列的唯一数据库索引添加到自定义数据库表中。该表已经存在,我正在索引的列也已经存在。这是我的代码部分:

$installer->getConnection()
        ->addIndex(
            $installer->getIdxName(
                $installer->getTable('ds_runs'),
                ['date_delivery', 'run'],
                AdapterInterface::INDEX_TYPE_UNIQUE
            ),
            ['date_delivery', 'run'],
            ['type' => AdapterInterface::INDEX_TYPE_UNIQUE]
        );

运行setup:upgrade时收到的错误是

Base table or view not found: 1146 Table 'doorstep.ds_runs_date_delivery_run_run_id' 
doesn't exist,query was:DESCRIBE `DS_RUNS_DATE_DELIVERY_RUN_RUN_ID`

不知道我在做什么错。我可以看到它正在根据表名和我要索引的列的连接来寻找表。

1 个答案:

答案 0 :(得分:1)

更新: 这是正确的解决方案:

 $installer->getConnection()
    ->addIndex(
            $installer->getTable('ds_runs'),
            $installer->getConnection()->getIndexName($installer->getTable('ds_runs'), ['date_delivery', 'run'], Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE),
    ['date_delivery', 'run'],
   Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE
);