diff --git a/packages/twenty-server/src/database/clickHouse/migrations/run-migrations.ts b/packages/twenty-server/src/database/clickHouse/migrations/run-migrations.ts index c57b48b2f..e467971b2 100644 --- a/packages/twenty-server/src/database/clickHouse/migrations/run-migrations.ts +++ b/packages/twenty-server/src/database/clickHouse/migrations/run-migrations.ts @@ -20,6 +20,23 @@ const clickHouseUrl = () => { ); }; +async function ensureDatabaseExists() { + const [url, database] = clickHouseUrl().split(/\/(?=[^/]*$)/); + const client = createClient({ + url, + }); + + try { + await client.command({ + query: `CREATE DATABASE IF NOT EXISTS "${database}"`, + }); + } catch (error) { + // It may fail due to permissions, but the database already exists + } finally { + await client.close(); + } +} + async function ensureMigrationTable(client: ClickHouseClient) { await client.command({ query: ` @@ -58,6 +75,8 @@ async function runMigrations() { const dir = path.join(__dirname); const files = fs.readdirSync(dir).filter((f) => f.endsWith('.sql')); + await ensureDatabaseExists(); + const client = createClient({ url: clickHouseUrl(), clickhouse_settings: {