Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Coluna BLOB/TEXT 'value' usada na especificação de chave sem um comprimento de chave


Parece que este é o problema (tendo o mesmo problema agora), estas duas linhas:
INDEX `IDX_ALPHANUM_INFO_TEXT_ATTRIBUTE_ID_VALUE` (`attribute_id`, `value`),
INDEX `IDX_ALPHANUM_INFO_TEXT_ENTITY_TYPE_ID_VALUE` (`entity_type_id`, `value`),

Precisa ter valores numéricos listados como tal:
INDEX `IDX_ALPHANUM_INFO_TEXT_ATTRIBUTE_ID_VALUE` (`attribute_id`, `value`(255)),
INDEX `IDX_ALPHANUM_INFO_TEXT_ENTITY_TYPE_ID_VALUE` (`entity_type_id`, `value`(255)),

Conecte isso e funcionará. O truque é fazê-lo inserir corretamente. Por uma questão de brevidade, não postarei a função inteira, mas em Mage_Eav_Model_Entity_Setup::createEntityTables por volta da linha 1341, você precisa modificar estas linhas:
            ->addIndex($this->getIdxName($eavTableName, array('attribute_id', 'value')),
                array('attribute_id', 'value'))
            ->addIndex($this->getIdxName($eavTableName, array('entity_type_id', 'value')),
                array('entity_type_id', 'value'))

Do seguinte modo:
            ->addIndex($this->getIdxName($eavTableName, array('attribute_id', 'value')),
                array('attribute_id', $type == 'text' ? array('name' => 'value', 'size' => 255) : 'value'))
            ->addIndex($this->getIdxName($eavTableName, array('entity_type_id', 'value')),
                array('entity_type_id', $type == 'text' ? array('name' => 'value', 'size' => 255) : 'value'))

Não tenho certeza de como você deve definir o valor do tamanho, mas acho que configurá-lo para 64k completo anularia o objetivo da indexação em primeiro lugar. Espero que alguém que saiba um pouco mais sobre sql do que eu entre na conversa.

Espero que ajude.