fbpx
0
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?

Thanks
Replies (4)
Vijaya Sharma Accepted Answer Pending Moderation
Team
  1. Replied more than a month ago
  2. #Permalink
Hello Test,

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

You can download the quickstart from here.

https://www.sellacious.com/download

Thank You
test Accepted Answer Pending Moderation
  1. Replied more than a month ago
  2. #Permalink
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.
test Accepted Answer Pending Moderation
  1. Replied more than a month ago
  2. #Permalink
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));
else
$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.
Vijaya Sharma Accepted Answer Pending Moderation
Team
  1. Replied more than a month ago
  2. #Permalink
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.

https://www.sellacious.com/download

Make sure to take a backup of your site.

Thank You
  • Page :
  • 1


There are no replies made for this post yet.
However, you are not allowed to reply to this post.
Support is Online
Support Hours
Monday To Saturday
From 09:00 To 21:00 IST
Sellacious Time 00:00:00

Login

?
?