Errors on DB schema update after upgrading to 4.1.2 (but it was there since 3.12.0)

I am getting SQL errors after updating passbolt to version 3.12.0, unluckily i realized it now I tried to update to Passbolt 4.1.2.
I now rolled back to version 3.12.0 using VM’s Snapshot

Passbolt 3.12.0 upgrading from unknown version
CentOS Linux release 7.9.2009 (Core)
MAriaDB Ver 15.1 Distrib 10.3.39
nginx/1.20.1
PHP version 7.4.33

Healthcheck fail (DB Schema out of date)

[root@passbolt ~]# sudo su -s /bin/bash -c "/usr/share/php/passbolt/bin/cake migrations migrate --no-lock" nginx
PHP Warning:  Module 'gnupg' already loaded in Unknown on line 0
using migration paths
 - /etc/passbolt/Migrations
using seed paths
 - /etc/passbolt/Seeds
using environment default
using adapter mysql
using database passbolt
ordering by creation time

 == 20220824081645 V380AlterNameLengthOnFolders: migrating
PDOException: SQLSTATE[HY000]: General error: 1709 Index column size too large. The maximum column size is 767 bytes in /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php:192
Stack trace:
#0 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(192): PDO->exec()
#1 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Util/AlterInstructions.php(108): Phinx\Db\Adapter\PdoAdapter->execute()
#2 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(626): Phinx\Db\Util\AlterInstructions->execute()
#3 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(1001): Phinx\Db\Adapter\PdoAdapter->executeAlterSteps()
#4 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterWrapper.php(477): Phinx\Db\Adapter\PdoAdapter->executeActions()
#5 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/TimedOutputAdapter.php(420): Phinx\Db\Adapter\AdapterWrapper->executeActions()
#6 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterWrapper.php(477): Phinx\Db\Adapter\TimedOutputAdapter->executeActions()
#7 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Plan/Plan.php(151): Phinx\Db\Adapter\AdapterWrapper->executeActions()
#8 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Table.php(719): Phinx\Db\Plan\Plan->execute()
#9 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Db/Table.php(627): Phinx\Db\Table->executeActions()
#10 /usr/share/php/passbolt/vendor/cakephp/migrations/src/Table.php(152): Phinx\Db\Table->update()
#11 /etc/passbolt/Migrations/20220824081645_V380AlterNameLengthOnFolders.php(34): Migrations\Table->update()
#12 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Migration/Manager/Environment.php(108): V380AlterNameLengthOnFolders->change()
#13 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Migration/Manager.php(388): Phinx\Migration\Manager\Environment->executeMigration()
#14 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Migration/Manager.php(359): Phinx\Migration\Manager->executeMigration()
#15 /usr/share/php/passbolt/vendor/robmorgan/phinx/src/Phinx/Console/Command/Migrate.php(122): Phinx\Migration\Manager->migrate()
#16 /usr/share/php/passbolt/vendor/cakephp/migrations/src/Command/Phinx/CommandTrait.php(37): Phinx\Console\Command\Migrate->execute()
#17 /usr/share/php/passbolt/vendor/cakephp/migrations/src/Command/Phinx/Migrate.php(85): Migrations\Command\Phinx\Migrate->parentExecute()
#18 /usr/share/php/passbolt/vendor/symfony/console/Command/Command.php(298): Migrations\Command\Phinx\Migrate->execute()
#19 /usr/share/php/passbolt/vendor/symfony/console/Application.php(1040): Symfony\Component\Console\Command\Command->run()
#20 /usr/share/php/passbolt/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand()
#21 /usr/share/php/passbolt/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
#22 /usr/share/php/passbolt/vendor/cakephp/migrations/src/Command/MigrationsCommand.php(126): Symfony\Component\Console\Application->run()
#23 /usr/share/php/passbolt/vendor/cakephp/cakephp/src/Console/BaseCommand.php(189): Migrations\Command\MigrationsCommand->execute()
#24 /usr/share/php/passbolt/vendor/cakephp/migrations/src/Command/MigrationsCommand.php(198): Cake\Console\BaseCommand->run()
#25 /usr/share/php/passbolt/vendor/cakephp/cakephp/src/Console/CommandRunner.php(334): Migrations\Command\MigrationsCommand->run()
#26 /usr/share/php/passbolt/vendor/cakephp/cakephp/src/Console/CommandRunner.php(172): Cake\Console\CommandRunner->runCommand()
#27 /usr/share/php/passbolt/bin/cake.php(13): Cake\Console\CommandRunner->run()
#28 {main}

Typically when we see this error one of the following settings is a bit off:

innodb_large_prefix=1
innodb_file_format=Barracuda
innodb_file_per_table=1
ROW_FORMAT = DYNAMIC or COMPRESSED

Could you check to make sure all of those are the settings you have for your database?

If not you’ll have to change the setting and then run mysqlcheck --optimize <passbolt_database> which will recreate the tables since once those settings are changed they only matter for new tables

It appears it solved the issue with 3.12.0
Updated to 4.1.2 and no errors .

Many many thanks

1 Like