Using Azure Database for MariaDB server

Has anyone been able to use the azure database for mariadb resource for remote database successfully with frappe?
I am stuck with this error:

Creation of your site - site1.local failed because MariaDB is not properly
configured to use the Barracuda storage engine.
Please add the settings below to MariaDB’s my.cnf, restart MariaDB then
run `bench new-site site1.local again.

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

Server Parameters:

1 Like

this is not error

you will have to copy and paste this in your my.cnf

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

Hi, have you used Azure Database for MariaDB server? I can’t find where to edit the cnf file, but the server parameteres can be modified in the portal. I attached the picture of server parameters

No I havent.

I just saw you can set params via UI so good.

Also after setting the parameters, must restart mysql service

Azure Database for MariaDB server is provided as a service, there is no option to restart it.
Basically it provides you with a database host url (eg erphost.mariadb.database.azure.com),
and an admin user (eg erpadmin) after filling the resource creation form.
The changes made to the Server Parameters in the dashboard can be observed using:

SELECT * FROM information_schema.global_variables WHERE variable_name IN (‘innodb_file_format’, ‘innodb_file_per_table’, ‘innodb_large_prefix’,‘character_set_client_handshake’, ‘character_set_server’,‘collation_server’) ORDER BY variable_name;

So the variables are actually applied after they are set in the dashboard, no restart required

so you still getting that error ?

Yes, I still have this error

Here is an update for anyone trying to use the Azure Database for MariaDB server, based on my findings. In the end it will not work.

  • Only 10.3 servers will work, as Azures mariadb 10.2 doesn’t support “files per table”

  • You must set the following Mariadb server parameters:
    collation_server: UTF8MB_UNICODE_CI
    character_set_server: UTF8MB
    lower_case_table_names: 2
    innodb_strict_mode: off

You will need to either disable MariaDB SSL enforcement, or customize the Mariadb database.py code to support only using ssl-ca, and not ssl-cert and ssl-key (they are not needed). you will also need to modify the code to ensure the user is formatted as user@server, rather than just passing the user (Azure MariaDB enforces this format).

Lastly, Azure MariaDB does not support MyISAM, which is required by the search and help tables. This pretty much is a hard fail for using the Azure MariaDB server. MyISAM enables the full text search feature needed for search and help; while InnoDB, which is used for all other tables, is the only engine allowed by Azure.

TLDR; you can’t use azure database for mariadb, because it doesn’t support full text search, which is required by ERPNext.

2 Likes