Create a new article and save it.
A new article in the CMS.
Save failed with the following error: Storage engine MEMORY is disabled (Table creation is disallowed).
My website on Google Cloud raises this error every time, that i try to save an article in the backend.
I found that the Indexer is trying to use a table with engine MEMORY, but on Google Cloud this kind of engine is not allowed.
administrator/components/com_finder/src/Indexer/Indexer.php
990: $db->setQuery('ALTER TABLE ' . $db->quoteName('#__finder_tokens') . ' ENGINE = MEMORY');
994: $db->setQuery('ALTER TABLE ' . $db->quoteName('#__finder_tokens_aggregate') . ' ENGINE = MEMORY');
administrator/components/com_finder/sql/install.mysql.sql
360: ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
379: ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
Joomla 4.3.2
Hosting Google Cloud
I think should be provided a fallback, like InnoDB engine, in case that the memory engine is not allowed.
Labels |
Added:
No Code Attached Yet
|
Title |
|
Labels |
Added:
Information Required
|
Status | New | ⇒ | Closed |
Closed_Date | 0000-00-00 00:00:00 | ⇒ | 2023-08-12 21:52:19 |
Closed_By | ⇒ | brianteeman |
Closing as the reported issue was answered and the op did not reply
Labels |
Removed:
Information Required
|
@bellu Thanks for reporting this issue. Unfortunately this is a known issue with certain kinds of replicated DB clusters, see issue #40368 .
With Joomla 4.3.2 a fix has been released which prevents the indexer from crashing in this case, see PR #40373 . This works when the database is created and Joomla was installed on a not replicated database and later replication is added or if the database later is transferred to a replicated cluster.
But if you want to run the Joomla installation already on the cluster, this is not enough. You have to change the "installation/sql/mysql/extensions.sql" file here https://github.com/joomla/joomla-cms/blob/4.3-dev/installation/sql/mysql/extensions.sql#L607 and here https://github.com/joomla/joomla-cms/blob/4.3-dev/installation/sql/mysql/extensions.sql#L628 by replacing the
ENGINE=MEMORY
byENGINE=InnoDB
. Then the installation should succeed and the indexer should work.The
administrator/components/com_finder/sql/install.mysql.sql
is not really relevant, it would only be used when com_finder is not installed so it would have been discovered with a discovery installation, which never can happen on Joomla 4.We have to live with this workaround until we can in a future version (maybe 5 or 6) can change the engine to InnoDB for new installations. Doing it within a minor or patch release could be considered as a backwards compatibility (b/c) break.
Please report back if that workaround works for you so we can close this issue. Thanks in advance.