Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kolumna BLOB/TEXT „wartość” użyta w specyfikacji klucza bez długości klucza

Wygląda na to, że to jest problem (mam teraz ten sam problem), te dwie linie:

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

Musisz mieć wymienione wartości liczbowe w następujący sposób:

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

Podłącz to i zadziała. Sztuczka polega na tym, aby poprawnie wstawić. Dla zwięzłości nie opublikuję całej funkcji, ale w Mage_Eav_Model_Entity_Setup::createEntityTables mniej więcej w wierszu 1341 musisz zmodyfikować te wiersze:

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

W następujący sposób:

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

Nie jestem do końca pewien, na jaką wartość należy ustawić wartość rozmiaru, ale myślę, że ustawienie jej na pełne 64k pokonałoby przede wszystkim cel indeksowania. Mam nadzieję, że ktoś, kto wie trochę więcej o sql, niż ja wtrącę.

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:jak uporządkować według pola, jeśli nie jest null, w przeciwnym razie użyj innego pola?

  2. Jak napisaćnajwiększe n na zapytanie typu grupy, ale z dodatkowymi warunkami?

  3. wybierz z jednej tabeli, policz z drugiej, gdzie id jest połączony

  4. Jak zmienić strefę czasową MySQL Server?

  5. „0000-00-00 00:00:00” nie może być reprezentowane jako błąd java.sql.Timestamp