Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Environment:FlowiseAI Flowise Database Environment

From Leeroopedia
Knowledge Sources
Domains Infrastructure, Database
Last Updated 2026-02-12 07:30 GMT

Overview

Database environment supporting SQLite (default), PostgreSQL, MySQL, or MariaDB as the persistence layer for Flowise.

Description

Flowise uses TypeORM as its ORM layer, supporting four database backends. SQLite is the default for zero-configuration local development, storing data in `~/.flowise/database.sqlite`. For production deployments, PostgreSQL or MySQL/MariaDB are recommended. The database stores chatflows, agentflows, credentials (encrypted), chat messages, document stores, evaluation data, and user/workspace configurations.

Usage

Use this environment when deploying Flowise with a specific database backend. The default SQLite requires no additional setup. Switch to PostgreSQL or MySQL for production deployments requiring concurrent access, better performance at scale, or managed database services.

System Requirements

Category Requirement Notes
SQLite No external server needed File-based; stored at DATABASE_PATH (default: `~/.flowise`)
PostgreSQL PostgreSQL 12+ server Driver: `pg` ^8.11.1; Default port: 5432
MySQL MySQL 5.7+ or 8.x server Driver: `mysql2` ^3.11.3; Default port: 3306; Charset: utf8mb4
MariaDB MariaDB 10.3+ server Driver: `mysql2` ^3.11.3; Default port: 3306; Charset: utf8mb4

Dependencies

Node.js Packages

  • `typeorm` >= 0.3.6 — ORM framework with migration support
  • `sqlite3` >= 5.1.6 — SQLite driver (default)
  • `pg` >= 8.11.1 — PostgreSQL driver
  • `mysql2` >= 3.11.3 — MySQL/MariaDB driver

Credentials

The following environment variables configure database access:

  • `DATABASE_TYPE`: Backend selection: `sqlite` | `postgres` | `mysql` | `mariadb` (default: `sqlite`)
  • `DATABASE_PATH`: SQLite file directory (default: `~/.flowise`)
  • `DATABASE_HOST`: Database server hostname (for non-SQLite)
  • `DATABASE_PORT`: Database server port (MySQL: `3306`, PostgreSQL: `5432`)
  • `DATABASE_NAME`: Database name
  • `DATABASE_USER`: Database username
  • `DATABASE_PASSWORD`: Database password
  • `DATABASE_SSL`: Enable SSL connection (default: `false`)
  • `DATABASE_SSL_KEY_BASE64`: SSL certificate in base64 encoding
  • `DATABASE_REJECT_UNAUTHORIZED`: Reject unauthorized SSL certificates (default: `false`)

Quick Install

# SQLite (default - no setup needed)
# Just start Flowise; it creates ~/.flowise/database.sqlite automatically

# PostgreSQL setup
export DATABASE_TYPE=postgres
export DATABASE_HOST=localhost
export DATABASE_PORT=5432
export DATABASE_NAME=flowise
export DATABASE_USER=flowise
export DATABASE_PASSWORD=your_password

# MySQL setup
export DATABASE_TYPE=mysql
export DATABASE_HOST=localhost
export DATABASE_PORT=3306
export DATABASE_NAME=flowise
export DATABASE_USER=flowise
export DATABASE_PASSWORD=your_password

Code Evidence

Database type selection from `docker/docker-compose.yml:11-19`:

# DATABASE
- DATABASE_PATH=${DATABASE_PATH}
- DATABASE_TYPE=${DATABASE_TYPE}
- DATABASE_PORT=${DATABASE_PORT}
- DATABASE_HOST=${DATABASE_HOST}
- DATABASE_NAME=${DATABASE_NAME}
- DATABASE_USER=${DATABASE_USER}
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
- DATABASE_SSL=${DATABASE_SSL}
- DATABASE_SSL_KEY_BASE64=${DATABASE_SSL_KEY_BASE64}

LONGTEXT migration for MySQL/MariaDB (preventing data loss) from `database/migrations/mysql/1765000000000-FixDocumentStoreFileChunkLongText.ts:10`:

// WARNING: Reverting to TEXT may cause data loss if content exceeds the 64KB limit.

Storage type fallback from `packages/server/src/utils/index.ts:1925`:

const storageType = process.env.STORAGE_TYPE ? process.env.STORAGE_TYPE : 'local'

Common Errors

Error Message Cause Solution
`SQLITE_BUSY: database is locked` Multiple processes accessing SQLite concurrently Switch to PostgreSQL or MySQL for multi-process/queue mode
`ER_DATA_TOO_LONG` (MySQL) Document chunk content exceeds TEXT column limit Ensure migration `1765000000000-FixDocumentStoreFileChunkLongText` has run (upgrades TEXT to LONGTEXT)
`ECONNREFUSED` to database host Database server unreachable Verify DATABASE_HOST and DATABASE_PORT; check network/firewall rules
`relation "chat_flow" does not exist` (PostgreSQL) Migrations not applied TypeORM runs migrations automatically on startup; check for migration errors in logs

Compatibility Notes

  • SQLite: Not recommended for queue mode (MODE=queue) as it does not support concurrent writes well; use PostgreSQL or MySQL instead
  • MySQL LONGTEXT: A migration exists to upgrade `document_store_file_chunk` columns from TEXT (64KB limit) to LONGTEXT to prevent data loss with large document chunks
  • PostgreSQL SSL: Set `DATABASE_SSL=true` and provide `DATABASE_SSL_KEY_BASE64` for cloud-hosted databases (AWS RDS, Azure, etc.)
  • Connection pooling: TypeORM manages connection pools internally with a 120-second idle timeout

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment