Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cột BLOB / TEXT 'giá trị' được sử dụng trong đặc tả khóa không có độ dài khóa

Có vẻ như đây là sự cố (hiện đang gặp sự cố tương tự), hai dòng sau:

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

Cần có các giá trị số được liệt kê như sau:

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

Cắm nó vào và nó sẽ hoạt động. Bí quyết là làm cho nó để chèn một cách chính xác. Vì lợi ích ngắn gọn, tôi sẽ không đăng toàn bộ hàm, nhưng trong Mage_Eav_Model_Entity_Setup::createEntityTables ở khoảng dòng 1341, bạn cần sửa đổi các dòng sau:

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

Như sau:

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

Tôi không chắc bạn nên đặt giá trị kích thước thành bao nhiêu, nhưng tôi nghĩ rằng đặt nó thành 64k đầy đủ sẽ đánh bại mục đích lập chỉ mục ngay từ đầu. Hy vọng rằng ai đó biết nhiều hơn một chút về sql hơn tôi sẽ kêu gọi.

Hy vọng điều đó sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trang web hiện đang offline do gặp lỗi - Mautic

  2. Lỗi cú pháp trong SQL tạo bảng

  3. Thay đổi cấu hình cơ sở dữ liệu CakePHP trên toàn cầu

  4. chọn dữ liệu từ bảng dựa trên ngày

  5. Sử dụng truy vấn chọn bên trong truy vấn Chèn cho cùng một tên bảng