From 03ff1fd26ac6efca7b94ddadc2208bb43bd3ab85 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 6 Jul 2022 15:57:11 +0200 Subject: [permissionmanager] Shorten permissionid to 100 chars Upgrading to utf8mb4 fails on older InnoDB setups with a key length limited to 768 bytes. While we could/should probably upgrade these some time, limit the column length for now, as even 100 characters is excessive for a permission id. --- modules-available/permissionmanager/install.inc.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'modules-available/permissionmanager') diff --git a/modules-available/permissionmanager/install.inc.php b/modules-available/permissionmanager/install.inc.php index 9e26613d..d0e0a016 100644 --- a/modules-available/permissionmanager/install.inc.php +++ b/modules-available/permissionmanager/install.inc.php @@ -31,7 +31,7 @@ $res[] = tableCreate('role_x_location', " $res[] = tableCreate('role_x_permission', " roleid int(10) unsigned NOT NULL, - permissionid varchar(200) NOT NULL, + permissionid varchar(100) NOT NULL, PRIMARY KEY (roleid, permissionid) "); @@ -109,6 +109,14 @@ if (!tableHasColumn('role', 'builtin')) { $res[] = UPDATE_DONE; } +// 2022-07-06 permissionid too long for older mariadb versions +if (tableColumnType('role_x_permission', 'permissionid') === 'varchar(200)') { + $alter = Database::exec("ALTER TABLE role_x_permission MODIFY permissionid varchar(100) NOT NULL"); + if ($alter === false) + finalResponse(UPDATE_FAILED, 'Cannot shorten permissionid to 100: ' . Database::lastError()); + $res[] = UPDATE_DONE; +} + if (Database::exec("INSERT INTO `role` (roleid, rolename, builtin, roledescription) VALUES (1,'Super-Admin', 1, 'Hat keinerlei Zugriffsbeschränkungen'), (2,'Admin', 1, 'Alles bis auf Rechte-/Nutzerverwaltung'), -- cgit v1.2.3-55-g7522