From 7001e2d161dcd555be723f2092632552fe35f827 Mon Sep 17 00:00:00 2001 From: lukinovec Date: Fri, 24 Apr 2026 11:52:18 +0200 Subject: [PATCH] Only specify `ENCODING=` in `CREATE DATABASE` if charset is configured If the charset is null, Postgres creates the DB with the server's default charset Co-authored-by: Copilot --- .../PostgreSQLDatabaseManager.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php b/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php index 6b2b465e..83bc65d8 100644 --- a/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php +++ b/src/Database/TenantDatabaseManagers/PostgreSQLDatabaseManager.php @@ -11,9 +11,16 @@ class PostgreSQLDatabaseManager extends TenantDatabaseManager public function createDatabase(TenantWithDatabase $tenant): bool { $database = $tenant->database()->getName(); - $charset = strtoupper($this->connection()->getConfig('charset') ?? 'UTF8'); + // If null, Postgres creates the DB with the server's default charset + $charset = $this->connection()->getConfig('charset'); - return $this->connection()->statement("CREATE DATABASE \"{$database}\" WITH TEMPLATE=template0 ENCODING='{$charset}'"); + $query = "CREATE DATABASE \"{$database}\" WITH TEMPLATE=template0"; + + if ($charset !== null) { + $query .= " ENCODING='" . strtoupper($charset) . "'"; + } + + return $this->connection()->statement($query); } public function deleteDatabase(TenantWithDatabase $tenant): bool