fix(installation): support mariadb in the setup wizard (#707)

Backport of InvoiceShelf/InvoiceShelf#704 to 2.x.
Fixes InvoiceShelf/docker#79.

A fresh install using the shipped docker-compose.mysql.yml cannot get past
the database step, because that compose file sets DB_CONNECTION=mariadb.

getDatabaseEnvironment() switched on sqlite, pgsql and mysql with no arm
for mariadb and no default, so it answered {"config":[]}. The wizard
renders <component :is="database_connection">, which resolves to nothing,
so the step came out blank — and nothing reached the log, because the app
never errored, it just replied with nothing.

Adds the mariadb arm plus a default, so an unrecognised driver is echoed
back with server defaults rather than producing an unrenderable response.
MariaDB is registered as an alias of the MySQL form, whose fields are
identical, and offered in each driver picker.

Tested against the original controller, where three of the new cases fail
with "Failed asserting that null is identical to 'mariadb'".
This commit is contained in:
Darko Gjorgjijoski
2026-07-29 12:37:41 +02:00
committed by GitHub
parent 2cf3b3e840
commit 7e483d06ce
6 changed files with 87 additions and 3 deletions
@@ -77,6 +77,28 @@ class DatabaseConfigurationController extends Controller
break;
case 'mariadb':
$databaseData = [
'database_connection' => 'mariadb',
'database_host' => '127.0.0.1',
'database_port' => 3306,
];
break;
default:
// Never return an empty config: the wizard picks its form from
// database_connection, so an unrecognised driver used to render
// a blank step with no way forward. Echo it back with the
// server defaults instead.
$databaseData = [
'database_connection' => $connection,
'database_host' => '127.0.0.1',
'database_port' => 3306,
];
break;
}
return response()->json([