系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
在重新索引Magento 2时修复无效列数据类型的步骤:
步骤1:转到以下路径
vendor/magento/module-eav/model/resourceModel/Helper.php
将以下行插入 getDdlTypeByColumnType() 函数
case 'int unsigned': $columnType = 'int'; break; case 'smallint unsigned': $columnType = 'smallint'; break; case 'bigint unsigned': $columnType = 'bigint'; break;
所以之前的getDdlTypeByColumnType()函数看起来像这样
public function getDdlTypeByColumnType($columnType) { switch ($columnType) { case 'char': case 'varchar': $columnType = 'text'; break; case 'tinyint': $columnType = 'smallint'; break; default: break; } return array_search($columnType, $this->_ddlColumnTypes); }
现在getDdlTypeByColumnType()函数已更改如下
public function getDdlTypeByColumnType($columnType) { switch ($columnType) { case 'int unsigned': $columnType = 'int'; break; case 'smallint unsigned': $columnType = 'smallint'; break; case 'bigint unsigned': $columnType = 'bigint'; break; case 'char': case 'varchar': $columnType = 'text'; break; case 'tinyint': $columnType = 'smallint'; break; default: break; } return array_search($columnType, $this->_ddlColumnTypes); }
结论:
因此,这样您就可以在Magento 2中重新索引时摆脱无效的列数据类型。此外,如果您遇到诸如“索引被另一个重新索引进程锁定”之类的错误。