Skip to main content

Database Configuration

Flowra uses Knex under the hood. Database configuration lives in app/Config/Database.js and is consumed by the DatabaseManager.

Default configuration​

app/Config/Database.js
module.exports = {
default: 'default',
connections: {
default: {
client: 'mysql2',
connection: {
host: process.env.DB_MYSQL_HOST_PRIMARY || process.env.DB_MYSQL_HOST || '127.0.0.1',
user: process.env.DB_DEFAULT_USERNAME || 'root',
password: process.env.DB_DEFAULT_PASSWORD || '',
database: process.env.DB_DEFAULT_DATABASE || 'flowra',
port: parseInt(process.env.DB_MYSQL_PORT_PRIMARY || process.env.DB_MYSQL_PORT, 10),
},
},
defaultRead: {
client: 'mysql2',
connection: {
host: process.env.DB_MYSQL_HOST_READONLY || process.env.DB_MYSQL_HOST || '127.0.0.1',
user: process.env.DB_DEFAULT_USERNAME || 'root',
password: process.env.DB_DEFAULT_PASSWORD || '',
database: process.env.DB_DEFAULT_DATABASE || 'flowra',
},
},
},
};

Connection aliases​

  • default is the primary connection.
  • defaultRead is used for read operations when available.

Services and models can choose the connection alias via the Service base class.

CLI configuration​

orm.cli.config.js reads your database config and maps it to Knex CLI commands. You can override connection names with environment variables like KNEX_CONNECTION.

Switching databases​

To use PostgreSQL or another database, update the connection client and connection values in app/Config/Database.js. Everything else in Flowra remains the same.

Keep config in one place

Flowra reads from app/Config/Database.js for runtime and from orm.cli.config.js for CLI migrations, so you only maintain one source of truth.