mrkeyoor.com_
Wed 21 Oct 17:46 UTC
Open Source3 min read

DuckDB 2.0 Defaults to a Database Format Older Versions Cannot Read

New DuckDB 2.0 databases use a format that 1.x cannot read. Existing files keep their format, and 1.5 support now runs until March 2027.

The DuckDB team released version 2.0.0 on October 21, moving its open-source analytical database to a new default storage format. Database files created under that default cannot be read by pre-2.0 versions, so an upgrade can break a workflow that hands new files to older applications.

DuckDB 2.0 has long-term support until at least October 2027, according to the release announcement. The CLI and Python client are already available, while other clients and some extensions may take a few days to follow. We haven't independently tested these compatibility rules in a mixed-version deployment.

The file's origin determines compatibility

The versioned migration guide identifies the new default as storage version 69. Earlier DuckDB versions cannot read it. That makes the version creating a database relevant to every application that later opens the file, even if those applications haven't changed.

Existing databases follow a different rule. DuckDB 2.0 can read and write files created by earlier versions without changing their storage version. Those files remain readable by the earlier version, the guide says. Simply opening an old database with 2.0 therefore doesn't impose the same compatibility break as creating a new database under its defaults.

Consider a scheduled job upgraded to 2.0 that creates a fresh database for a reporting script still running 1.5. Under the documented defaults, the reporting script will fail to open that file. The migration guide warns about this exact class of deployment: multiple DuckDB processes using different versions. Checking only the main application's dependency leaves the file's other readers unaccounted for.

Choose the output format before rolling out

The CLI's -storage-version argument can create files for an older version. DuckDB also documents a configuration setting and an ATTACH option for choosing storage compatibility in the migration guide. Teams distributing database files can use those controls while their readers catch up.

For an existing database, moving to the new format is a separate operation. The guide describes exporting with the older engine and importing into a new database with 2.0. The practical distinction is between testing a newer engine against an existing file and adopting a file format that requires newer readers. Those decisions can happen at different times.

The support extension gives teams time to test

Support for DuckDB 1.5 now runs until March 2027. The team says it extended that window to allow time for testing. It recommends a shadow system that follows the production workload before switching over, and suggests that mission-critical deployments consider waiting for a patch release.

Watch the first 2.0 patch, which the team expects in November, and the availability of your application's clients and extensions. Before adopting the new format, verify that every process receiving those files can read them. A successful query in the upgraded CLI answers only part of that question.

Sources

  1. Announcing DuckDB 2.0.0 LTS Cinnamon Teal
  2. Migrating to DuckDB 2.0