Seite 1 von 2

group_id problem

Verfasst: 15.05.2005 12:20
von macnack
Hallo

ich habe folgendes Problem:

ich kann manche Benutzer nicht zu Moderatoren machen?

Das Forum hat ca. 1200 Benutzer,
mit den ersten ca 650 ist alles kein Problem,
aber allen anderen Benutzern wurde evtl. nach irgendeinem unvollständigen update die group_id 0 zugeordnet.

Wenn ich nun einen da von zum Mod mache, sind sie alle mods...

Wie kann ich das beheben?

"Reset auto increment values" mit Database Maintenance bringt folgende Fehlermeldung

Code: Alles auswählen

phpbb_groups: table updated 
Fehler: Couldn't alter table!

SQL Error : 1075 Incorrect table definition; There can only be one auto column and it must be defined as a key

ALTER IGNORE TABLE phpbb_groups MODIFY group_id mediumint(8) NOT NULL auto_increment

Line : 503
File : /www/htdocs/xxx/phpBB2/includes/functions_dbmtnc.php
Schon mal danke im voraus

Verfasst: 15.05.2005 12:46
von PhilippK
Poste doch mal die aktuelle Struktur der Tabelle. Am besten exportierst du dazu die Struktur der Tabelle in phpMyAdmin und postest den SQL-Befehl hier.

Gruß, Philipp

Verfasst: 15.05.2005 19:04
von macnack
Habe jetzt nur Struktur exportiert alle anderen Häckchen ( z.B. AUTO_INCREMENT-Wert hinzufügen) rausgenommen.

Code: Alles auswählen

-- Tabellenstruktur für Tabelle `phpbb_groups`
-- 

CREATE TABLE phpbb_groups (
  group_id mediumint(8) NOT NULL default '0',
  group_type tinyint(4) NOT NULL default '1',
  group_name varchar(40) NOT NULL default '',
  group_description varchar(255) NOT NULL default '',
  group_moderator mediumint(8) NOT NULL default '0',
  group_single_user tinyint(1) NOT NULL default '1',
  KEY group_single_user (group_single_user)
) TYPE=MyISAM;

Verfasst: 15.05.2005 20:45
von PhilippK
Die auto_increments wären aber interessant gewesen :-)

Code: Alles auswählen

CREATE TABLE `phpbb_groups` (
  `group_id` mediumint(8) NOT NULL auto_increment,
  `group_type` tinyint(4) NOT NULL default '1',
  `group_name` varchar(40) NOT NULL default '',
  `group_description` varchar(255) NOT NULL default '',
  `group_moderator` mediumint(8) NOT NULL default '0',
  `group_single_user` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`group_id`),
  KEY `group_single_user` (`group_single_user`)
) TYPE=MyISAM;
Gruß, Philipp

Verfasst: 15.05.2005 20:48
von macnack
:D

und so sieht das aus wenn ich das Häckchen nicht rausmache

Code: Alles auswählen

-- Tabellenstruktur für Tabelle `phpbb_groups`
-- 

CREATE TABLE `phpbb_groups` (
  `group_id` mediumint(8) NOT NULL default '0',
  `group_type` tinyint(4) NOT NULL default '1',
  `group_name` varchar(40) NOT NULL default '',
  `group_description` varchar(255) NOT NULL default '',
  `group_moderator` mediumint(8) NOT NULL default '0',
  `group_single_user` tinyint(1) NOT NULL default '1',
  KEY `group_single_user` (`group_single_user`)
) TYPE=MyISAM;

Verfasst: 15.05.2005 21:49
von PhilippK
Dann gehe mal mit phpMyAdmin auf die Tabelle und ändere sie so ab, dass group_id zum Primärschlüssel wird. Vorher vielleicht sicherheitshalber ein Backup machen :-)

Gruß, Philipp

Verfasst: 15.05.2005 22:16
von macnack
also wenn ich bei group_id unter extras auto_increments eingebe bekomme ich folgende fehlermeldung

Code: Alles auswählen

SQL-Befehl: 

ALTER TABLE `phpbb_groups` CHANGE `group_id` `group_id` MEDIUMINT( 8 ) DEFAULT '0' NOT NULL AUTO_INCREMENT 
MySQL meldet:  

#1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key 


Verfasst: 15.05.2005 23:12
von PhilippK
auto_increment ist auch der zweite Schritt - Primärschlüssel wäre der erste :-)
Welche phpMyAdmin-Version verwendest du?

Gruß, Philipp

Verfasst: 16.05.2005 09:25
von macnack
Hey
ein click auf Primärschlüssel bringt folgende Fehlermeldung

Code: Alles auswählen

ALTER TABLE `phpbb_groups` ADD PRIMARY KEY ( `group_id` ) 
MySQL meldet:  

#1062 - Duplicate entry '0' for key 1 
Verwende phpMyAdmin 2.6.0-pl3

Verfasst: 16.05.2005 10:26
von PhilippK
Gut, dann sind wir schon recht nahe am Problem...
Lösche alle Einträge, die für group_id den Wert 0 haben. DB Maintenance fixt das ganze später wieder, sollte also kein Problem darstellen.

Gruß, Philipp