Update to 16.0.3 problems with groupfolder plugin

Support intro

Update problems after swtiching from Nextcloud 16.0.x to 16.0.3 with the groupfolders plugin.
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘acl’ in ‘field list’

Nextcloud version : 16.0.3
Operating system and version : Debian 9
Apache or nginx version : included in Docker image 16.0.3
PHP version : included in Docker image 16.0.3

The issue you are facing:
I pulled the new image and restarted the containers and that worked pretty fine.
After that I tried to patch every single plugin. Also here every plugin worked up to the groupfolders plugin.
After updating and enabling the groupfolders plugin Nextcloud is showing an 500 message, with the info I should contact the administrator.
After manually disabling the groupfolder plugin over the occ cli the Nextcloud backend was again working and I was able to visit the settings over the webbrowser.

I detected errors for the app “index” in the settings/admin/logging page and I think there is something wrong in the database. I also tried to fix it with a occ repair command, but this did not help. Also I tried to reinstall the groupfolders plugin.

Is this the first time you’ve seen this error? (Y/N): Y

Steps to replicate it:

  1. Patched to 16.0.3
  2. Restarted Containers
  3. Updated groupfolder plugin

The output of your Nextcloud log in Admin > Logging:

[index] Error: Doctrine\DBAL\Exception\InvalidFieldNameException: An exception occurred while executing 'SELECT `f`.`folder_id`, `mount_point`, `quota`, `acl`, `fileid`, `storage`, `path`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`, `etag`, `encrypted`, `parent`, `a`.`permissions` AS `group_permissions`, `c`.`permissions` AS `permissions` FROM `oc_group_folders` `f` INNER JOIN `oc_group_folders_groups` `a` ON `f`.`folder_id` = `a`.`folder_id` LEFT JOIN `oc_filecache` `c` ON (`name` = CONCAT(`f`.`folder_id`, '')) AND (`parent` = ?) WHERE `a`.`group_id` = ?' with params [1013797, "admin"]:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'acl' in 'field list' at <<closure>>

 0. /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php line 184
    Doctrine\DBAL\Driver\AbstractMySQLDriver->convertException("An exception oc ... '", Doctrine\DBAL\Dr ... ]})
 1. /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php line 158
    Doctrine\DBAL\DBALException::wrapException(Doctrine\DBAL\Driver\PDOMySql\Driver {}, Doctrine\DBAL\Dr ... ]}, "An exception oc ... '")
 2. /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php line 938
    Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Doctrine\DBAL\Driver\PDOMySql\Driver {}, Doctrine\DBAL\Dr ... ]}, "SELECT `f`.`fol ... ?", {1: 1013797,2: " ... "})
 3. /var/www/html/lib/private/DB/Connection.php line 195
    Doctrine\DBAL\Connection->executeQuery("SELECT `f`.`fol ... ?", [1013797,"*** se ... "], [2,2], null)
 4. /var/www/html/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php line 219
    OC\DB\Connection->executeQuery("SELECT `f`.`fol ... 1", {dcValue1: "***  ... 7}, {dcValue1: 2,dcValue2: 2})
 5. /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php line 214
    Doctrine\DBAL\Query\QueryBuilder->execute()
 6. /var/www/html/apps/groupfolders/lib/Folder/FolderManager.php line 241
    OC\DB\QueryBuilder\QueryBuilder->execute()
 7. /var/www/html/apps/groupfolders/lib/Folder/FolderManager.php line 358
    OCA\GroupFolders\Folder\FolderManager->getFoldersForGroup("*** sensitive parameter replaced ***", 8)
 8. <<closure>>
    OCA\GroupFolders\Folder\FolderManager->OCA\GroupFolders\Folder\{closure}("*** sensitive parameters replaced ***")
 9. /var/www/html/apps/groupfolders/lib/Folder/FolderManager.php line 359
    undefinedundefinedarray_reduce(["*** sensitive parameter replaced ***"], Closure {}, "*** sensitive parameter replaced ***")
10. /var/www/html/apps/groupfolders/lib/Mount/MountProvider.php line 82
    OCA\GroupFolders\Folder\FolderManager->getFoldersForUser(OC\User\User {}, 8)
11. /var/www/html/apps/groupfolders/lib/Mount/MountProvider.php line 86
    OCA\GroupFolders\Mount\MountProvider->getFoldersForUser(OC\User\User {})
12. /var/www/html/lib/private/Files/Config/MountProviderCollection.php line 103
    OCA\GroupFolders\Mount\MountProvider->getMountsForUser(OC\User\User {}, OC\Files\Storage\StorageFactory {})
13. /var/www/html/lib/private/Files/Filesystem.php line 447
    OC\Files\Config\MountProviderCollection->addMountForUser(OC\User\User {}, OC\Files\Mount\Manager {})
14. /var/www/html/lib/private/Files/Filesystem.php line 376
    OC\Files\Filesystem::initMountPoints("nextcloud")
15. /var/www/html/lib/private/legacy/util.php line 309
    OC\Files\Filesystem::init("nextcloud", "/nextcloud/files")
16. /var/www/html/lib/base.php line 974
    OC_Util::setupFS()
17. /var/www/html/index.php line 42
    OC::handleRequest()

GET /index.php/settings/admin/undefined/img/notifications.svg
from 192.168.0.35 by nextcloudat 2019-07-25T09:42:46+00:00

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

$CONFIG = array (
  'instanceid' => 'xx',
  'passwordsalt' => 'xx',
  'secret' => 'xx',
  'auth.bruteforce.protection.enabled' => false,
  'trusted_domains' => 
  array (
    // 0 => 'xx',
    0 => '*', // for debugging directly over IP
  ),
  'datadirectory' => '/var/www/html/data',
  'skeletondirectory' => '',
  'overwrite.cli.url' => 'https://xx',
  'dbtype' => 'mysql',
  'version' => '16.0.3.0',
  'dbname' => 'nextcloud',
  'dbhost' => 'nextcloud.mariadb',
  'dbport' => '3401',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'xx',
  'dbpassword' => 'xx',
  'installed' => true,
  'maintenance' => false,
  'mail_from_address' => 'support',
  'mail_smtpmode' => 'smtp',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_domain' => 'xx',
  'mail_smtphost' => 'xx',
  'mail_smtpport' => '587',
  'mail_smtpsecure' => 'tls',
  'mail_smtpauth' => 1,
  'mail_smtpname' => 'xx',
  'mail_smtppassword' => 'xx',
  'filelocking.enabled' => true,
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'nextcloud.redis',
    'port' => 6379,
  ),
  'loglevel' => 0,
  'theme' => '',
  'app_install_overwrite' => 
  array (
    0 => 'twofactor_totp',
    1 => 'bookmarks_fulltextsearch',
    2 => 'admin_notifications',
  ),
);

I think it is a small step by adding the columns, but I’m not really sure which table is affected.
Because there are a few tables with similar names. And there is also an “acl” folder, so I wanted to ask before I try to fix something.

image

Thanks a lot.

I’m personally not using the group folder app, therefore I can only tell you that the following tables don’t contain an acl column in NC 16. I hope that helps you in some way:

  • oc_groups
  • oc_group_admin
  • oc_group_user

Ty @j-ed for your answer.
I just tried it for the table oc_group_folders. I think I showed in the first post to many tables in the image. It must be a problem in the oc_group_folders*. The ACL table is currently not in use I think. It is empty.
So I added an acl row in the group_folders table:

ALTER TABLE oc_group_folders ADD acl VARCHAR(255) NOT NULL AFTER quota;

After that the select comand from the first post worked:

SELECT f.folder_id, mount_point, quota, acl, fileid, storage, path, name, mimetype, mimepart, size, mtime, storage_mtime, etag, encrypted, parent, a.permissions AS group_permissions, c.permissions AS permissions FROM oc_group_folders f INNER JOIN oc_group_folders_groups a ON f.folder_id = a.folder_id LEFT JOIN oc_filecache c ON (name = CONCAT(f.folder_id, ‘’)) AND (parent = 1013797) WHERE a.group_id = “admin”

After that I was able to enable the “groupfolders” plugin.

When I have a look to the actual title for the nextcloud 16 version Nextcloud 16: machine learning based security and usability features, ACL permissions and cross-app projects is there a word like ACL :wink:
So I think there must be a problem with the database migration, maybe during the plugin installation or something like that.

For further information I would be very thankful.

Fine, that it works now. You will find further information about how to configure the app here.