DEV.co
Open-Source Databases · aimeos

upscheme

Upscheme is a PHP package that simplifies database schema migrations and updates across MySQL, PostgreSQL, SQLite, and SQL Server. It abstracts complexity away from Doctrine DBAL with a cleaner API and handles upgrades from any prior schema state without rollback support.

Source: GitHub — github.com/aimeos/upscheme
2.7k
GitHub stars
5
Forks
PHP
Primary language
LGPL-3.0
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositoryaimeos/upscheme
Owneraimeos
Primary languagePHP
LicenseLGPL-3.0 — OSI-approved
Stars2.7k
Forks5
Open issues2
Latest releaseUnknown
Last updated2026-07-05
Sourcehttps://github.com/aimeos/upscheme

What upscheme is

Built on Doctrine DBAL, Upscheme provides a fluent PHP API for defining tables, columns, indexes, foreign keys, and sequences. It executes schema diffs automatically and supports dependency ordering between migrations via before()/after() methods, storing execution state in the actual schema rather than a tracking table.

Quickstart

Get the upscheme source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/aimeos/upscheme.gitcd upscheme# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Multi-tenant SaaS with third-party extensions

Upscheme's dependency system allows extensions to define migration order without central coordination. Schema-based tracking prevents sync issues when multiple extensions modify the same tables.

Continuous deployment pipelines

Idempotent migrations that upgrade from any schema state eliminate deployment ordering concerns. No need to ensure prior migrations ran; the target schema definition is the single source of truth.

Cross-database applications

Doctrine DBAL abstraction with platform-specific column options (e.g., binary charset for MySQL) lets you maintain one migration codebase for MySQL, PostgreSQL, SQLite, and SQL Server.

Implementation considerations

  • Migrations are executed against a live database connection; ensure backups and staging environment validation before production runs.
  • Schema generation from existing databases (mentioned in README) requires review of generated migration accuracy, particularly for platform-specific features.
  • Doctrine DBAL connection configuration must match your environment (driver, host, credentials); document these secrets securely (env vars, vaults).
  • Test migrations in isolated environments to confirm idempotent behavior and verify no unintended schema changes occur on re-runs.
  • Review Doctrine DBAL version compatibility if upgrading; breaking changes in DBAL may affect Upscheme behavior.

When to avoid it — and what to weigh

  • Rollback/downgrade requirements — Upscheme intentionally omits down() methods to prevent implicit data loss. If your application requires rollback capability, consider Doctrine Migrations or Flyway.
  • NoSQL or non-relational databases — Upscheme is RDBMS-only via Doctrine DBAL. MongoDB, DynamoDB, and other non-relational stores require different tooling.
  • Complex stored procedures or views — Upscheme focuses on table, column, index, and constraint definitions. Management of stored procedures, triggers, views, or other database objects is not a documented feature.
  • Non-PHP applications — Upscheme is a PHP-only package. Java, Node.js, Python, or Go applications will need language-native alternatives.

License & commercial use

Upscheme is licensed under LGPL-3.0 (GNU Lesser General Public License v3.0). This is a copyleft license requiring derivative works and modifications to be released under the same license, but allows proprietary applications to link to unmodified LGPL libraries.

LGPL-3.0 permits commercial use of unmodified Upscheme in proprietary applications. However, if you modify Upscheme's source code, those modifications must be released under LGPL-3.0. Consult your legal team to confirm compliance with your distribution model and IP strategy.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceActive
DocumentationStrong
License clarityClear
Deployment complexityLow
DEV.co fitStrong
Assessment confidenceHigh
Security considerations

Database credentials must be stored securely (environment variables, secrets manager) and never committed to version control. SQL injection is mitigated by Doctrine DBAL's parameterized queries, but custom SQL execution (executeStatement()) is caller-responsible. Review migration scripts from untrusted sources before execution; migrations have direct database write access.

Alternatives to consider

Doctrine Migrations

Native Doctrine project with rollback support (down() methods) and time-based migration ordering. Better if you require downgrade capability and tight Doctrine ORM integration, but less flexible for third-party extension dependencies.

Laravel Migrations

Laravel-native migration system with similar fluent API and rollback support. Ideal if using Laravel; Upscheme is agnostic and works outside Laravel.

Flyway

Language-agnostic, database-agnostic migration tool with strong version control semantics and enterprise support. Better for polyglot teams and complex schema governance, but requires Java and separate tooling outside your PHP codebase.

Software development agency

Build on upscheme with DEV.co software developers

Explore Upscheme's fluent API and dependency-aware migration system. Start with the GitHub repository and documentation to understand how it handles multi-database deployments and third-party extension coordination.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

upscheme FAQ

Does Upscheme support rollbacks/downgrades?
No. Upscheme intentionally omits down() methods to prevent data loss from lossy migrations. It only upgrades; use backups and staging environments to validate before production.
Can I use Upscheme with Laravel or Symfony?
Yes. Upscheme is framework-agnostic and works standalone. It can coexist with framework-native migrations if you manage naming and ordering carefully.
How does Upscheme track which migrations have run?
It doesn't use a tracking table. Instead, it compares the desired schema (from migration definitions) to the actual database schema and applies only necessary changes. This allows upgrades from any prior state.
What databases does Upscheme support?
Good support: MySQL, MariaDB, PostgreSQL, SQLite, SQL Server. Limited support: DB2, Oracle, SQL Anywhere. Doctrine DBAL drivers determine availability.

Software development & web development with DEV.co

DEV.co is a software development agency delivering custom software development services to companies building on open source. Our software developers and web developers design, integrate, and ship production systems — spanning web development, APIs, AI, data, and cloud. If upscheme is part of your open-source databases roadmap, our team can implement, customize, migrate, and maintain it.

Ready to simplify your database migrations?

Explore Upscheme's fluent API and dependency-aware migration system. Start with the GitHub repository and documentation to understand how it handles multi-database deployments and third-party extension coordination.