系统学习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中重新索引时摆脱无效的列数据类型。此外,如果您遇到诸如“索引被另一个重新索引进程锁定”之类的错误。