sql >> Database >  >> RDS >> Mysql

BLOB/TEXT kolom 'waarde' gebruikt in sleutelspecificatie zonder sleutellengte

Het lijkt erop dat dit het probleem is (heb nu hetzelfde probleem), deze twee regels:

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

Er moeten numerieke waarden als zodanig worden vermeld:

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

Sluit die aan en het zal werken. De truc is om het correct in te voegen. Kortheidshalve zal ik niet de hele functie posten, maar in Mage_Eav_Model_Entity_Setup::createEntityTables rond regel 1341 moet je deze regels aanpassen:

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

Als volgt:

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

Ik weet niet precies waar je de groottewaarde op moet instellen, maar ik zou denken dat het instellen van de volledige 64k het doel van indexeren in de eerste plaats zou verslaan. Ik hoop dat iemand die iets meer weet over sql dan ik mij zal melden.

Ik hoop dat dat helpt.



  1. MySQL OP DUPLICATE KEY - laatste invoeg-ID?

  2. Verbinding maken met de database Perl

  3. Waarschuwing:mysql_query():3 is geen geldige MySQL-Link-bron

  4. Kan PostgreSQL niet verbinden met externe database met pgAdmin