> Markdown version of https://yucca.app/en/docs/guides/DB/migration/. Documentation index: [llms.txt](https://yucca.app/en/llms.txt), full text in one file: [llms-full.txt](https://yucca.app/en/llms-full.txt). Any page is available as Markdown: append `.md` to its URL without the trailing slash.

# Migrating from SQLite to Postgres

## Overview

If you started out using Yucca with SQLite and your resource needs have since grown, you can migrate the data from the SQLite database to Postgres. Migrating back is not supported.

## Migration

1. Deploy and prepare [postgres](https://yucca.app/en/docs/guides/DB/postgres.md) in advance.

2. Stop the Yucca server:

   ```sh
   sudo systemctl stop yucca

   ```

3. Run the migration command, specifying the path to the source and destination databases:

   ```sh
   /opt/yucca/yucca admin migrate

   ```

   You can see the full list of parameters in the help output:

   ```sh
   /opt/yucca/yucca admin migrate --help
   Migrate state from SQLite to PostgreSQL

   Usage:
   yucca admin migrate [flags]

   Flags:
       --config string                         Path to configuration file (default "/opt/yucca/yucca.toml")
       --data-dir string                       The data directory used to store state and other persistent data (default "data")
       --database-busy-timeout int             Timeout in seconds for waiting for an SQLite table to become unlocked (default 500)
       --database-ca-cert-path string          The path to the CA certificate to use (default "/etc/ssl/certs")
       --database-cache-mode string            Shared cache setting used for connecting to the database (private, shared) (default "shared")
       --database-client-cert-path string      The path to the client cert
       --database-client-key-path string       The path to the client key
       --database-conn-max-lifetime duration   Sets the maximum amount of time a connection may be reused (default 0s)
       --database-host string                  Database host (not applicable for sqlite3) (default "127.0.0.1:5432")
       --database-max-idle-conn int            The maximum number of connections in the idle connection pool (default 2)
       --database-max-open-conn int            The maximum number of open connections to the database
       --database-name string                  The name of the Yucca database (default "yucca")
       --database-password string              The database user's password (not applicable for sqlite3) (default "postgres")
       --database-path string                  SQLite database location
       --database-ssl-mode string              SSL mode for Postgres (disable, require or verify-full) (default "disable")
       --database-user string                  The database user (not applicable for sqlite3) (default "postgres")
   -h, --help                                  Help for migrate
       --state-dir string                      The directory used to store state and other persistent data (default "<data-dir>/state")

   ```

4. In the [configuration](https://yucca.app/en/docs/configuration.md#database), specify the new database type **postgres** and the connection details.

5. Start the Yucca server:

   ```sh
   sudo systemctl start yucca

   ```

6. Make sure that Yucca is now using **postgres** – you can see this in the configuration section `/ui/administration/config` or in the log at server startup.
