Problem in Upgrade from 12.0.2 to 12.0.3 with USER_SAML active

I had NC 12.0.2 installed with ā€œSSO & SAML authenicationā€ 1.3.4 active.

Using occ, I get this message
-bash-4.2$ php occ upgrade
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Updating database schema
Updated database
PHP Fatal error: Class OCA\User_SAML\UserBackend contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (OCP\Authentication\IApacheBackend::getLogoutUrl) in /usr/share/nextcloud/apps/user_saml/lib/userbackend.php on line 34
PHP Stack trace:
PHP 1. {main}() /usr/share/nextcloud/occ:0
PHP 2. require_once() /usr/share/nextcloud/occ:11
PHP 3. OC\Console\Application->run() /usr/share/nextcloud/console.php:100
PHP 4. Symfony\Component\Console\Application->run() /usr/share/nextcloud/lib/private/Console/Application.php:170
PHP 5. Symfony\Component\Console\Application->doRun() /usr/share/nextcloud/3rdparty/symfony/console/Application.php:117
PHP 6. Symfony\Component\Console\Application->doRunCommand() /usr/share/nextcloud/3rdparty/symfony/console/Application.php:186
PHP 7. OC\Core\Command\Upgrade->run() /usr/share/nextcloud/3rdparty/symfony/console/Application.php:818
PHP 8. OC\Core\Command\Upgrade->execute() /usr/share/nextcloud/3rdparty/symfony/console/Command/Command.php:256
PHP 9. OC\Updater->upgrade() /usr/share/nextcloud/core/Command/Upgrade.php:263
PHP 10. OC\Updater->doUpgrade() /usr/share/nextcloud/lib/private/Updater.php:130
PHP 11. OC\Updater->doAppUpgrade() /usr/share/nextcloud/lib/private/Updater.php:262
PHP 12. OC_App::loadApp() /usr/share/nextcloud/lib/private/Updater.php:386
PHP 13. OC_App::requireAppFile() /usr/share/nextcloud/lib/private/legacy/app.php:149
PHP 14. require_once() /usr/share/nextcloud/lib/private/legacy/app.php:209
PHP 15. spl_autoload_call() /usr/share/nextcloud/apps/user_saml/appinfo/app.php:41
PHP 16. OC\Autoloader->load() /usr/share/nextcloud/apps/user_saml/appinfo/app.php:41
PHP 17. require_once() /usr/share/nextcloud/lib/autoloader.php:169
-bash-4.2$

I manually update appconfig row user_saml enabled to no.

The upgrade works successfully.

I can then access the system and upgrade the SAML app to 1.4.0 and re-enable it.

1 Like

Has your instance access to the app store? If so it should have manually fetched the SAML update from https://apps.nextcloud.com/apps/user_saml

It has access.

I ran the upgrade (as attached).

Then I took a DB backup as it said that it had upgraded the DB - and I wanted a copy of this.

Then I just changed the enabled to No. The value of installed was 1.3.4. (I got this from the DB backup file.)

I then went to the site via the browser - as it had maintenance as false in the config file.

I ran the updater. This now worked and I was presented with the log-on screen.

I went on as an Admin user and looked in Apps.

This told me that there was an upgrade 1.4.0 available and that it was disabled. So I upgraded it and then enabled it both via the screen.

1 Like

Thanks for this. This was the clue I needed to update the instance. Very much terrified to update my being using SQL for the first time.

I use Ubunut 17.04, PHP7.0 and PostgreSQL 9.6.
Below is how I updated my postgres instance:

# su postgres
# psql

Entered the postgesql command line

[postgresql]# \l (lists the databases)

found the one that was my nextcloud database

[postgresql]# \connect nextcloud_db_name

[postgresql]# \dt (shows all the tables - not a required command)

[postgresql]# \d oc_appconfig (shows the organization of the table - not a required command)

[postgresql]# SELECT * FROM oc_appconfig WHERE appid=ā€˜user_samlā€™ AND configkey=ā€˜enabledā€™;

This last command should show a " configvalue = yes ". If you get more than one row, something is wrong.

THIS UPDATES THE TABLE:

[postgresql]# UPDATE oc_appconfig SET configvalue=ā€˜noā€™ WHERE appid=ā€˜user_samlā€™ AND configkey=ā€˜enabledā€™;

This is as much a record for me as for anyone else when I have to do it in the future. :slight_smile: