Mysql
 sql >> Database >  >> RDS >> Mysql

Colonna BLOB/TEXT 'valore' utilizzata nella specifica della chiave senza una lunghezza della chiave

Sembra che questo sia il problema (che ha lo stesso problema in questo momento), queste due righe:

INDEX `IDX_ALPHANUM_INFO_TEXT_ATTRIBUTE_ID_VALUE` (`attribute_id`, `value`),
INDEX `IDX_ALPHANUM_INFO_TEXT_ENTITY_TYPE_ID_VALUE` (`entity_type_id`, `value`),

È necessario che i valori numerici siano elencati come tali:

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)),

Collegalo e funzionerà. Il trucco è farlo inserire correttamente. Per brevità non posterò l'intera funzione, ma in Mage_Eav_Model_Entity_Setup::createEntityTables verso la riga 1341, è necessario modificare queste righe:

            ->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'))

Come segue:

            ->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'))

Non sono del tutto sicuro di cosa dovresti impostare il valore della dimensione, ma penserei che impostarlo su 64k completi vanificherebbe lo scopo dell'indicizzazione in primo luogo. Si spera che qualcuno che sappia qualcosa in più su sql di quello che interverrà io.

Spero di esserti stato d'aiuto.