首先先建立postgresql 叫做nexus 並且在 /opt/nexusTest/sonatype-work/nexus3/etc/fabric/ 底下建立 https://help.sonatype.com/en/iq-migration-to-postgresql.html ``` nexus-store.properties 內容為: #2024-06-14 17:23:45,882+0800 #Fri Jun 14 17:23:45 CST 2024 password=29772977 name=nexus jdbcUrl=jdbc\:postgresql\://127.0.0.1\:5432/nexus type=jdbc username=nexus ``` 並且到外層的nexus.properties修改檔案新增以下 ``` nexus.datastore.enabled=true ``` 到以下網址下載nexus-db-migrator-3.69.0-01.jar ``` https://help.sonatype.com/en/download.html?_ga=2.134098510.1108240933.1718073755-1024108698.1711935895 ``` 將nexus-db-migrator-3.69.0-01.jar 放置到 /opt/nexusTest/sonatype-work/nexus3/db 並使用以下 ``` 此為postgresql至 h2 sudo java -Xmx5G -Xms5G -XX:+UseG1GC -XX:MaxDirectMemorySize=10240M -jar nexus-db-migrator-*.jar --migration_type=postgres --db_url="jdbc:postgresql://127.0.0.1:5432/nexus?user=nexus&password=29772977" 此為h2 to postgresql sudo java -Xmx5G -Xms5G -XX:+UseG1GC -XX:MaxDirectMemorySize=10240M -jar nexus-db-migrator-*.jar --migration_type=h2_to_postgres --db_url="jdbc:postgresql://127.0.0.1:5432/nexusvar372?user=sonatypeadmin&password=admin123" 如果已有數據在db請加上--force=true如下為h2 to postgresql sudo java -Xmx5G -Xms5G -XX:+UseG1GC -XX:MaxDirectMemorySize=10240M -jar nexus-db-migrator-*.jar --migration_type=h2_to_postgres --db_url="jdbc:postgresql://127.0.0.1:5432/nexusvar372?user=sonatypeadmin&password=admin123" --content_migration=true --export_json=false --force=true ``` ``` 您遇到的错误信息表明目标PostgreSQL数据库已经包含数据,迁移工具需要显式确认才能继续覆盖这些现有数据。迁移器设计为在目标数据库不为空时防止意外数据丢失,要求使用--force=true标志。 解决此问题,您有两个选项: 如果您打算覆盖目标数据库中的现有数据,需要将命令中添加--force=true标志。这将允许迁移器尽管存在现有数据也能继续迁移过程。您的更新命令如下所示: sudo java -Xmx5G -Xms5G -XX:+UseG1GC -XX:MaxDirectMemorySize=10240M -jar nexus-db-migrator-*.jar --migration_type=postgres --db_url="jdbc:postgresql://127.0.0.1:5432/nexus?user=nexus&password=29772977" --force=true 如果您不希望覆盖现有数据,应考虑备份当前数据库或迁移到一个不会与现有数据冲突的不同数据库实例。在继续迁移之前,请确保目标数据库要么为空,要么包含可以安全覆盖的数据。 请记住,使用--force=true选项将删除目标数据库中所有现有数据,因此在确认数据可以安全删除或已在其他地方备份后谨慎使用。 ```