Support Article
Upgrade.sh fails with Database-TableWithNoColumns error
SA-19588
Summary
Using Oracle, when upgrading from Pega 6 to Pega 7 using the command line upgrade scripts, the upgrade fails with the below error. The table PEGASCHEMA.pr4_base has columns.
Error Messages
Caused by: com.pega.pegarules.pub.PRRuntimeException: Error determining the mode of PRPC install from database.
at com.pega.pegarules.data.internal.PRDataProviderImpl.isMultiTenantEnvironment(PRDataProviderImpl.java:1135) [...]
Caused by: com.pega.pegarules.pub.database.NonexistentTableException: Database-TableWithNoColumns PEGASCHEMA.pr4_base PegaRULES
Steps to Reproduce
1) Run upgrade.sh.
Root Cause
The root cause of this problem is in a third-party product integrated with PRPC. If you are running RULE or DATA upgrade part of Update documentation using deployment user with DBA type privileges as specified in the installation/upgrade guide, the process fails if synonyms exist on RULE tables such as pr4_base in schemas other than the one that is being upgraded. E.g
When upgrading v71rulesupdate schema and have a prpc63sp1 schema on the same Oracle server, create a synonym pr4_base for prpc63sp1.pr4_base. Then try and run update/upgrade.
Without the synonym, the same user is able to upgrade to 7.1.6 without issue. This is an Oracle bug regarding how its JDBC drivers handle synonyms.
Resolution
This issue is resolved through the following local change: Instead of upgrading to a split schema you can upgrade to a single schema and then split the schemas after upgrade.
1. Upgrade from 6.x to 7.1.x Single Schema (v71update) per upgrade guide.
2. Run the migrateSystem script to migrate your updated rules objects from v71update (combined data and rules) to new v71rules schema. The source and targer user running the migration should be the deployment user (as outlined in Installation Guide) who has privileges to both schemas. The source and target connection properties (driver, url, etc.) should be filled in appropriately. The remaining migrateSystem.properties should be set this way:
pega.source.jdbc.username=DeploymentUser
pega.source.rules.schema=v71update
pega.target.jdbc.username=DeploymentUser
pega.target.rules.schema=v71rules
pega.target.data.schema=v71update
pega.move.admin.table=false
pega.clone.generate.xml=true
pega.clone.create.ddl=true
pega.clone.apply.ddl=true
pega.bulkmover.unload.db=true
pega.bulkmover.load.db=true
pega.rules.objects.generate=true
pega.rules.objects.apply=true
3. After the upgrade please follow the instructions in the upgrade guide to cleanup the unused rules tables from your v71update schema.
Published February 13, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.