Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

'nilai' kolom BLOB/TEXT digunakan dalam spesifikasi kunci tanpa panjang kunci

Sepertinya ini masalahnya (memiliki masalah yang sama sekarang), dua baris ini:

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

Perlu memiliki nilai numerik yang terdaftar seperti itu:

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

Pasang itu, dan itu akan berhasil. Triknya adalah memasukkannya dengan benar. Demi singkatnya saya tidak akan memposting seluruh fungsi, tetapi di Mage_Eav_Model_Entity_Setup::createEntityTables sekitar baris 1341, Anda perlu mengubah baris ini:

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

Sebagai berikut:

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

Saya tidak yakin apa yang harus Anda atur untuk nilai ukuran, tetapi saya akan berpikir bahwa mengaturnya ke 64k penuh akan mengalahkan tujuan pengindeksan di tempat pertama. Semoga seseorang yang tahu sedikit lebih banyak tentang sql daripada saya akan ikut bergabung.

Semoga membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Waktu Mysql Union V.S. pisahkan kueri satu per satu

  2. Pilih dan kembalikan hanya Checksum (bukan Tabel) dari tabel checksum di mysql

  3. Beberapa relasi entitas identik

  4. Kesalahan hanya baca MySQL yang aneh

  5. cara mengirim nilai pilih dengan input tersembunyi