If it doesn't then the following will give you a set of empty groups but you will at least be able to make new ones without 'error on creating group' happening.
In my upgrade, id was not made autoincrement in the mdl_groups table and fixing this is what I think fixed groups.
The problem in my case was that the uprade did not make the new tables quite correctly. By the time I worked the solution out I could not restore my original groups to the live moodle because people were working on it and to take everyone back to the restore point was not worth it.
The structure of the two tables should be
mdl_groups_members -
Field name | Type | Allow nulls? | Key | Default value | Extras | |
id | bigint(10) unsigned | No | Primary | auto_increment | ||
groupid | bigint(10) unsigned | No | Indexed | 0 | ||
userid | bigint(10) unsigned | No | Indexed | 0 | ||
timeadded | bigint(10) unsigned | No | None | 0 |
mdl_groups as follows. In my upgrade, id was not made autoincrement and fixing this is what I think fixed groups.
Field name | Type | Allow nulls? | Key | Default value | Extras | |
id | bigint(10) unsigned | No | Primary | auto_increment | ||
courseid | bigint(10) unsigned | No | Indexed | |||
name | varchar(254) | No | None | |||
description | text | Yes | None | |||
enrolmentkey | varchar(50) | Yes | None | |||
picture | bigint(10) unsigned | No | None | 0 | ||
hidepicture | tinyint(1) unsigned | No | None | 0 | ||
timecreated | bigint(10) unsigned | No | None | 0 | ||
timemodified | bigint(10) unsigned | No | None | 0 |