Error upgrading from 8.4.3 to 8.5.13 0 Browser Info Environment
"There is no table with name 'bitnami_concrete58.expressform170expresssearchindexattributes' in the schema."
return new self("There is no table with name '".$tableName."' in the schema.", self::TABLE_DOESNT_EXIST);
I double checked the mysql db and there's definitely not supposed to be a table with that name.
Tried running the script again (forced) with "/index.php/ccm/system/upgrade?force=1" but same error. No other pages in the site are viewable afterwards, as the error affects all of them, effectively bricking the site.
I was able to do a clean install with 8.5.1 with no issues. However, I need a site to support PHP 7.3 so the upgrade path is essential.
$indexTable = $schema->getTable($indexTableName);
was returning an array or an invalid table name. So when I commented out the following line to prevent the code from running it worked ok:
Naturally, I'm concerned that a necessary upgrade to the db structure hasn't occurred so I'm not sure what the possible side-effects in the future could be.
Hopefully this is helpful to anyone facing the same issue.
A "<Express Object Name>expresssearchindexattributes" table is created for each Express object you define. In this case something happened when you tried to delete the Express object definition. The expresssearchindexattributes table was deleted but the parent Express records were not deleted (I suspect there is/was a C5 bug that prevents deleting an entry if it has entities). The result is the Express object still appears on the System & Settings > Express page but can't be used.
You can test this by going to System & Settings > Express > select the offending Express object > View "you object" Entries. You will probably get an sql error saying something like
"An exception occurred while executing 'SELECT count(distinct e.exEntryID) FROM ExpressEntityEntries e LEFT JOIN <Express Object Name>ExpressSearchIndexAttributes..."
The fix is to manually delete the offending records from ExpressEntityEntries and ExpressEntity.
Something like the following (WARNING: These will delete any entries associated with the entity id so don't run these unless you are sure you don't need the entity):
DELETE FROM ExpressEntityEntries WHERE exEntryEntityID = "The-entity-id-from-the-error";
The go back to System & Settings and delete the Express Object