Omeka 2.8 Classic in Azure Containers

I am trying to get Omeka 2.8 Classic to run in Azure containers. I have a web service app that runs a Debian variant with Apache and all of the require pre-reqs (although PHP is 7.4). The database exists in a separate app service container running MySQL 5.4 (I had to disable ssl to get it to work).

The Omeka install fails with no details. When I click the Install button a second time it seems to work, but ultimately once I turn on the dev environment I can see that it’s trying to use db tables that don’t exist. So the install didn’t actually complete.

Is there anything I can do to get Omeka to work in this environment? Is it a problem with PHP 7.4 that needs downgraded? Hopefully it’s a fix within the Omeka code so I don’t have to use old PHP. Any help would be appreciated.

It should work fine with PHP 7.4.

If you enable error display before installing fresh, you should get an actual error message to see what’s happening.

Enabling error display before install didn’t show anything different. I got the same error:

Schema task failed on table ‘omeka_search_texts’ with Zend_Db_Statement_Mysqli_Exception: Mysqli statement execute error : Got error 1 from storage engine

Are you using Azure’s managed database product? Maybe it doesn’t support MyISAM: the search_texts table is the only one created during the install that uses the MyISAM engine.

Or, I see you say the database is in another container, maybe you have MyISAM disabled there? Something along those lines, I suspect.

MyISAM seems to be enabled at the db level. Here is the output of SHOW ENGINES:

However, when I tried to manually create a MyISAM table I got an Error 1030 Got error 1 from storage engine.

Figured it out. MyISAM is not supported in Azure Database for MySQL. Somehow they have it disabled and there’s nothing we can do about it. https://techcommunity.microsoft.com/t5/azure-database-support-blog/azure-database-for-mysql-8211-can-t-restore-database-with-error/ba-p/368896

Is it possible for Omeka to use only InnoDB tables for the whole product?

With a modern MySQL (might need to be newer than 5.4, but maybe if you’re using Azure’s MySQL you have a higher version actually?) you can use InnoDB for that table: Omeka Classic supports quite old versions of MySQL and so uses MyISAM there for compatibility reasons.

That being said, at the moment you’d just have to manually edit the install SQL (application/schema/search_texts.sql) to change the engine for that table, we don’t have a more automatic way to change that.

Made the change and the install worked perfectly. Thanks!