204,593+ downloads

  Friday, 07 February 2020
  4 Replies
  1.1K Visits
Dear support team,

I changed a data length of a string value of the product specification item many times and finally got this error: Table 'mgusta91_j2.#__sellacious_cache_specifications' doesn't exist Table 'mgusta91_j2.#__sellacious_cache_specifications' doesn't exist. What I should do in order to cover this issue?

1 year ago
Hello Test,

Kindly, install the sellacious again. It looks this table is missing from the database somehow.

You can download the quickstart from here.


Thank You
1 year ago
Dear Sellacious dev team,

Finally I found a problem with your code and my data. I'm using Sellacious v1.7.3 and the issue is not fixed in v1.6.0 or fixed another one as written here https://www.sellacious.com/community-support/2472-__sellacious_cache_specifications-doesn-t-exis

The problem is following: I did a number of product attributes and placed data to them. From time to time I catch an error that table named after ..._sellacious_cache_specifications doesn't exist.

The problem is in the cache table creating algorithm which is programmed in the Specifications.php file. I caught an error and found it in a log file as "Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs".

Further study showed up that in this code

$lenSql = 'SELECT MAX(LENGTH(field_value)) FROM #__sellacious_field_values WHERE field_id = %d';

foreach ($fields as $field)
$len = $this->db->setQuery(sprintf($lenSql, $field->id))->loadResult();
$col = 'spec_' . $field->id;
$cmt = $field->title;

$cols[] = sprintf('%s VARCHAR(%d) NOT NULL DEFAULT %s COMMENT %s', $this->db->qn($col), $len + 1, "''", $this->db->q($cmt));

you do not check if full table row will exceed 65535 bytes. Next code makes a query to the database and throws an exception.

So I found a problem but do not have decision yet.
1 year ago
Finally found a decision. I identified columns where large amount of text is and made the following if clause. Where 528 and 529 are the ids of products specification fields where I store my large texts.

if ($field->id == 528 || $field->id == 529)
$cols[] = sprintf('%s text COMMENT %s', $this->db->qn($col), $this->db->q($cmt));
$cols[] = sprintf('%s VARCHAR(%d) NOT NULL DEFAULT %s COMMENT %s', $this->db->qn($col), $len + 1, "''", $this->db->q($cmt));

The file to edit is libraries/sellacious/objects/Sellacious/Cache/Specifications.php

Hope this will help.
1 year ago
Hello Test,

In sellacious 2.0, this table doesn't exist as the cache process has been updated.

You can download the 2.0 quickstart from here.


Make sure to take a backup of your site.

Thank You
  • Page :
  • 1
There are no replies made for this post yet.
Be one of the first to reply to this post!
  • +91 9410060107
  • Email contact@sellacious.com