# Migrating to PostgreSQL failing

**URL:** <https://community.sonatype.com/t/migrating-to-postgresql-failing/7334>\
**Category:** Sonatype Nexus Repository\
**Created:** [September 17, 2021, 6:16pm UTC](https://community.sonatype.com/t/migrating-to-postgresql-failing/7334 "2021-09-17T18:16:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![dpowers1](https://yyz1.discourse-cdn.com/flex047/user_avatar/community.sonatype.com/dpowers1/32/2063_2.png) [@dpowers1](https://community.sonatype.com/u/dpowers1)\
**Post date:** [September 17, 2021, 6:16pm UTC](https://community.sonatype.com/t/migrating-to-postgresql-failing/7334/1 "2021-09-17T18:16:52Z")

</div>

I have tried following [Migrating to a New Database](https://help.sonatype.com/repomanager3/new-database-options/migrating-to-a-new-database)

I am getting the following error when attempting to migrate to PostgreSQL. I am running this inside the Nexus 3 Pro Docker container by running the following commands.

1. `docker-compose stop nexus`
2. `docker-compose run nexus bash`
3. `cd /nexus-data/db`
4. `curl https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/nxrm3-migrator/nexus-db-migrator-3.34.0-01.jar --output nexus-db-migrator-3.34.0-01.jar`
5. `java -Xmx4G -Xms4G -XX:MaxDirectMemorySize=4014M -jar nexus-db-migrator-3.34.0-01.jar --migration_type=postgres --db_url="jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=REDACTED” --debug`

```auto
Failed to get driver instance for jdbcUrl=jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=<masked>

```

Full debug enabled output (I tried without debug first and got the same error)

```auto
bash-4.4$ java -Xmx4G -Xms4G -XX:MaxDirectMemorySize=4014M -jar nexus-db-migrator-3.34.0-01.jar --migration_type=postgres --db_url="jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=REDACTED” --debug
18:00:55 [main] INFO c.s.n.d.migrator.MigratorApplication - --content_migration parameter is absent. Setting it to true.
18:00:55 [main] INFO c.s.n.d.migrator.MigratorApplication - ------------------------------------------------------------
18:00:55 [main] INFO c.s.n.d.migrator.MigratorApplication - Java version: Red Hat, Inc. 1.8.0_282
18:00:55 [main] INFO c.s.n.d.migrator.MigratorApplication - JVM arguments: -Xmx4G -Xms4G -XX:MaxDirectMemorySize=4014M
18:00:55 [main] INFO c.s.n.d.migrator.MigratorApplication - Migrator arguments: --migration_type=postgres --db_url=jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password= **** --debug --content_migration=true
18:00:55 [main] INFO c.s.n.d.migrator.MigratorApplication - ------------------------------------------------------------
18:00:56 [main] DEBUG o.s.b.c.l.ClasspathLoggingApplicationListener - Application started with classpath: [file:/nexus-data/db/nexus-db-migrator-3.34.0-01.jar]
18:00:56 [main] INFO c.s.n.d.migrator.MigratorApplication - Starting MigratorApplication v3.34.0-01 on 65f064d9db48 with PID 106 (/nexus-data/db/nexus-db-migrator-3.34.0-01.jar started by nexus in /nexus-data/db)
18:00:56 [main] INFO c.s.n.d.migrator.MigratorApplication - No active profile set, falling back to default profiles: default
18:00:56 [main] DEBUG o.s.boot.SpringApplication - Loading source class com.sonatype.nexus.db.migrator.MigratorApplication
18:00:56 [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'jar:file:/nexus-data/db/nexus-db-migrator-3.34.0-01.jar!/application.properties' (classpath:/application.properties)
18:00:57 [main] INFO o.s.s.c.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
18:00:58 [main] WARN o.s.c.a.AnnotationConfigApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchDataSourceInitializer' defined in class path resource [org/springframework/boot/autoconfigure/batch/BatchAutoConfiguration$DataSourceInitializerConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.UncategorizedScriptException: Failed to execute database script; nested exception is java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=<masked>
18:00:58 [main] INFO o.s.s.c.ThreadPoolTaskScheduler - Shutting down ExecutorService 'taskScheduler'
18:00:58 [main] DEBUG o.s.b.c.l.ClasspathLoggingApplicationListener - Application failed to start with classpath: [file:/nexus-data/db/nexus-db-migrator-3.34.0-01.jar]
18:00:58 [main] DEBUG o.s.b.a.l.ConditionEvaluationReportLoggingListener - 

============================
CONDITIONS EVALUATION REPORT
============================

<REMOVED>

18:00:58 [main] ERROR o.s.boot.SpringApplication - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchDataSourceInitializer' defined in class path resource [org/springframework/boot/autoconfigure/batch/BatchAutoConfiguration$DataSourceInitializerConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.UncategorizedScriptException: Failed to execute database script; nested exception is java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=<masked>
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
	at com.sonatype.nexus.db.migrator.MigratorApplication.main(MigratorApplication.java:62)
Caused by: org.springframework.jdbc.datasource.init.UncategorizedScriptException: Failed to execute database script; nested exception is java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=<masked>
	at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:59)
	at org.springframework.boot.jdbc.AbstractDataSourceInitializer.initialize(AbstractDataSourceInitializer.java:71)
	at org.springframework.boot.jdbc.AbstractDataSourceInitializer.afterPropertiesSet(AbstractDataSourceInitializer.java:55)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790)
	... 15 common frames omitted
Caused by: java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc\:postgresql\://postgres\:5432/nexus3?user=nexus3&password=<masked>
	at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:114)
	at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:325)
	at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:114)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
	at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:47)
	... 19 common frames omitted
Caused by: java.sql.SQLException: No suitable driver
	at java.sql.DriverManager.getDriver(DriverManager.java:315)
	at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:106)
	... 27 common frames omitted

```

`docker-compose.yml`

```auto
ersion: "3"
services:
  # HTTPS proxy (not jwilder as it did not support the needed /v2 Docker redirect)
  nginx-proxy:
    image: nginx:latest
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # Config
      - /root/nexus3/default.conf:/etc/nginx/conf.d/default.conf
      
      # Keep the dhparams (Should generate on the first run)
      - dhparam:/etc/nginx/dhparam
      
      # Fix the upload size issue
      - /root/nexus3/my_custom_proxy_settings.conf:/etc/nginx/conf.d/my_custom_proxy_settings.conf:ro
      
      # Push the certs to nginx
      - /root/nexus3/certs:/etc/nginx/certs:ro
    depends_on:
      - nexus

  # Artifact storage
  nexus:
    image: sonatype/nexus3:latest
    container_name: nexus
    restart: always
    stop_grace_period: 2m
    volumes:
        - nexus-data:/nexus-data
        - /mnt/nexus_mvn_mirror_repo_data:/nexus-mvn-mirror-repo-data
        - /mnt/nexus_docker_repo_data:/nexus-docker-repo-data
        - /mnt/nexus_mvn_repo_data:/nexus-mvn-repo-data
    depends_on:
        - postgres

  # PostgreSQL Database
  postgres:
    image: postgres:latest
    container_name: postgresql
    restart: always
    environment:
        POSTGRES_USER: nexus3
        POSTGRES_PASSWORD: REDACTED
    volumes:
        - pgdata:/var/lib/postgresql/data

volumes:
  nexus-data:
  dhparam:
  pgdata:

```

---

<div class="post-metadata">

**Author:** ![jtom](https://yyz1.discourse-cdn.com/flex047/user_avatar/community.sonatype.com/jtom/32/68_2.png) [@jtom](https://community.sonatype.com/u/jtom)\
**Post date:** [September 17, 2021, 6:35pm UTC](https://community.sonatype.com/t/migrating-to-postgresql-failing/7334/2 "2021-09-17T18:35:08Z")

</div>

Is your Repo instance 3.34?

---

<div class="post-metadata">

**Author:** ![mpiggott](https://avatars.discourse-cdn.com/v4/letter/m/f0a364/32.png) [@mpiggott](https://community.sonatype.com/u/mpiggott)\
**Post date:** [September 17, 2021, 6:41pm UTC](https://community.sonatype.com/t/migrating-to-postgresql-failing/7334/3 "2021-09-17T18:41:50Z")

</div>

My only guess might be you have property file encoding of colons (e.g. `\:`) in the migrator command which shouldn’t be necessary for the CLI. (You will need them for the properties file)

---

<div class="post-metadata">

**Author:** ![dpowers1](https://yyz1.discourse-cdn.com/flex047/user_avatar/community.sonatype.com/dpowers1/32/2063_2.png) [@dpowers1](https://community.sonatype.com/u/dpowers1)\
**Post date:** [September 17, 2021, 6:58pm UTC](https://community.sonatype.com/t/migrating-to-postgresql-failing/7334/4 "2021-09-17T18:58:32Z")

</div>

@jtom yup. PRO 3.34.0-01

@mpiggott that was it!

I copy / pasted my jdbc string from my `/nexus-data/etc/fabric/nexus-store.properties` file. Once I removed those escapes it executed the JAR and migrated the database over. I then got the expected `MyBatis databaseId: PostgreSQL` in the logs as discussed in the other ticket.

Thanks again! Happy Friday!

```auto
nexus | 2021-09-17 18:53:38,471+0000 INFO [FelixStartLevel] *SYSTEM org.sonatype.nexus.datastore.mybatis.MyBatisDataStore - nexus - MyBatis databaseId: PostgreSQL
nexus | 2021-09-17 18:53:38,602+0000 INFO [FelixStartLevel] *SYSTEM org.sonatype.nexus.datastore.mybatis.MyBatisDataStore - nexus - Creating schema for AnonymousConfigurationDAO
...

```

---

<div class="post-metadata">

**Author:** ![alexsunny734](https://avatars.discourse-cdn.com/v4/letter/a/9e8a1a/32.png) [@alexsunny734](https://community.sonatype.com/u/alexsunny734)\
**Post date:** [October 4, 2021, 11:04am UTC](https://community.sonatype.com/t/migrating-to-postgresql-failing/7334/5 "2021-10-04T11:04:41Z")

</div>

thanks for the awesome information.  
[https://ometv.onl](https://ometv.onl) [https://chatroulette.top](https://chatroulette.top)
