Which DB migration tool to use with Firebird 5

41 views
Skip to first unread message

Daniel Sapoundjiev

unread,
May 30, 2025, 3:57:45 AMMay 30
to firebird-general
Hi
I'm looking for db migration tool which
- can be executed standalone, without the need of virtual machines
- has executables for Windows(32 and 64 bit) and MacOS (arm and intel)
- will be executed separately of my application, not from within it.

I think Atlas would be best if I can use it.
Also other GOLang tools such as 
golang-migrate/migrate
pressly/goose
sql-migrate
dbmate

But I cannot see Firebird support on their support list.
I was thinking, may be there is some common tool used by most of the Firebird users,
something which Firebird community prefers to use

Please, share your thoughts

Regards

Dimitry Sibiryakov

unread,
May 30, 2025, 4:00:41 AMMay 30
to firebird...@googlegroups.com
Daniel Sapoundjiev wrote 30.05.2025 9:57:
> I was thinking, may be there is some common tool used by most of the Firebird users,
> something which Firebird community prefers to use

It depends on where you are going to migrate from.
Upgrade between Firebird versions is usually done by gbak.

--
WBR, SD.

Mark Rotteveel

unread,
May 30, 2025, 4:07:43 AMMay 30
to firebird...@googlegroups.com
Database migration tools are for versioning updates to your schema, so
you can migrate the schema to a new version in a controlled manner when
you update your application.

Mark
--
Mark Rotteveel

Daniel Sapoundjiev

unread,
May 30, 2025, 4:11:32 AMMay 30
to firebird-general
I think the same name is used for tools like gbak and the migration tools I'm talking about, which often brings confusion.
I'm talking about tools which uses scripts or declaration files, which the tool uses to bring the database to the newest desired state.
And they keep track of which scripts are already executed on this machine.
Such tools should be used in most of the software applications.
Some of them executes db update on every start. Sometimes scripts are executed after installation -new or upgrade

Mark Rotteveel

unread,
May 30, 2025, 4:14:03 AMMay 30
to firebird...@googlegroups.com
That golang-migrate/migrate lists Firebird.

Given the list of tools, it looks like you're specifically looking for
Go tools.

For the Java world, there is Flyway, for which I've written the Firebird
support. It can also be used as a standalone tool. You also have
Liquibase, but I've never used it.

Mark
--
Mark Rotteveel

Dimitry Sibiryakov

unread,
May 30, 2025, 4:25:05 AMMay 30
to firebird...@googlegroups.com
Daniel Sapoundjiev wrote 30.05.2025 10:11:
> I'm talking about tools which uses scripts or declaration files, which the tool
> uses to bring the database to the newest desired state.
> And they keep track of which scripts are already executed on this machine.
> Such tools should be used in most of the software applications.

I personally execute upgrade script from application but the same script can
be executed by isql.

--
WBR, SD.

Mark Rotteveel

unread,
May 30, 2025, 4:31:17 AMMay 30
to firebird...@googlegroups.com
That is a bad way to manage migrations for applications that are
deployed in multiple environments, or in multiple locations/clients.
With migrations, you have a structured way of upgrading (and, depending
on the tool, downgrading) your schema, in a way that an application (or
set of applications) can also check if the database matches their
requirements. They can then either upgrade on their own, or fail with an
error about a mismatch in the required version. It also prevents you
from forgetting to run scripts, or running them out of order.

Mark
--
Mark Rotteveel

Dimitry Sibiryakov

unread,
May 30, 2025, 4:36:14 AMMay 30
to firebird...@googlegroups.com
'Mark Rotteveel' via firebird-general wrote 30.05.2025 10:31:
> That is a bad way to manage migrations for applications that are deployed in
> multiple environments, or in multiple locations/clients.

Not a problem as long as the application check database version (which is
kept in a table) on run. Then it has the version of the database and know
required version so it can choose the right script to run.
The only problem is the users modifying the database in a way that makes the
upgrade script to fail but I don't think advanced tools can do something with it
as well.

--
WBR, SD.

Daniel Sapoundjiev

unread,
May 30, 2025, 4:53:01 AMMay 30
to firebird-general
I'll give golang-migrate/migrate a try

For java applications I use Flyway and Liquibase which is fine cause I know there is JVM on the machine
and do it on every start of the application.
However, in this case it is about object pascal, c++ and golang applications which can be installed on machines without JVM present.
That's why I'm looking for standalone migration tools.
I think any tool written on c++, object pascal or golang can do the job, but I saw the golang tools are more evolved, that's why my focused shifted to them
Reply all
Reply to author
Forward
0 new messages