PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Doppelte Zeile in Tabelle - Duplikat lässt sich nicht löschen



Frejia
12.05.2008, 18:48
Ich habe in der Winout Tabelle von einem Slot die Winout Zeile mit den Jackpot Werten und Gewinntopf Werten doppelt. Die Werte unterscheiden sich minimal aber wachsen in beiden Zeilen mit jedem Dreh an. Normalerweise sollte da nur eine Zeile sein. Das Problem ist nur das sich das Duplikat nicht löschen. Unter PHPMyAdmin kommt keine Fehlermeldung wenn ich die Zeile löschen möchte, aber es passiert auch nix. Der Befehl wird scheinbar ausgeführt aber danach ist noch alles beim alten. Im MySQLDumper wird wenigstens eine Fehlermeldung ausgegeben:


MySQL-ERROR Fehler bei der Anfrage:

DELETE FROM `xxxxxxxxxxx` WHERE `Array`='1' AND `Array`='20050000' AND `Array`='2810000' AND `Array`='1490000' AND `Array`='1425000' AND `Array`='1025000' AND `Array`='1100000' AND `Array`='27352.00' AND `Array`='1463700.00' AND `Array`='186052.00' AND`Array`='2145000.00' AND `Array`='267322.00' AND `Array`='885500.00' AND `Array`='551312.00' AND `Array`='660000.00' AND`Array`='222500.00' AND `Array`='220000.00' AND `Array`='290000.00' AND `Array`='880000.00' MySQL meldet:

Unknown column 'Array' in 'where clause'

Wie kann ich den Fehler beheben? Ich befürchte das wenn ein Jackpot gewonnen wird der Wert aus beiden Zeilen ausgeschüttet wird.

Edit: Nach einem Update vom MySQLDumper wirft er keine Fehlermeldung mehr aus, aber das Problem bleibt das selbe. Wenn ich die Zeile editieren will kommt aber im PHPMyAdmin folgende Meldung: MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen).

Gremlin
12.05.2008, 19:31
Gibt es ein Feld mit dem Namen Array? :thumb:

Frejia
12.05.2008, 19:44
Eigentlich nicht. Die Struktur sieht folgendermaßen aus:


CREATE TABLE IF NOT EXISTS `xxxxxxx_winout` (
`slotid` int(10) NOT NULL default '0',
`jackpot1` int(20) NOT NULL default '0',
`jackpot2` int(20) NOT NULL default '0',
`jackpot3` int(20) NOT NULL default '0',
`jackpot4` int(20) NOT NULL default '0',
`jackpot5` int(20) NOT NULL default '0',
`jackpot6` int(20) NOT NULL default '0',
`winout1` double(20,2) NOT NULL default '0.00',
`winout2` double(20,2) NOT NULL default '0.00',
`winout3` double(20,2) NOT NULL default '0.00',
`winout4` double(20,2) NOT NULL default '0.00',
`winout5` double(20,2) NOT NULL default '0.00',
`winout6` double(20,2) NOT NULL default '0.00',
`winout7` double(20,2) NOT NULL default '0.00',
`winout8` double(20,2) NOT NULL default '0.00',
`winout9` double(20,2) NOT NULL default '0.00',
`winout10` double(20,2) NOT NULL default '0.00',
`winout11` double(20,2) NOT NULL default '0.00',
`winout12` double(20,2) NOT NULL default '0.00',
KEY `slotid` (`slotid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `xxxxxxx_winout`
--

INSERT INTO `xxxxxxx_winout` (`slotid`, `jackpot1`, `jackpot2`, `jackpot3`, `jackpot4`, `jackpot5`, `jackpot6`, `winout1`, `winout2`, `winout3`, `winout4`, `winout5`, `winout6`, `winout7`, `winout8`, `winout9`, `winout10`, `winout11`, `winout12`) VALUES
(1, 21249500, 2855000, 1490000, 1425000, 1025000, 1100000, 27223.00, 19183400.00, 159760.00, 2172000.00, 267322.00, 885500.00, 551312.00, 660000.00, 222500.00, 220000.00, 290000.00, 880000.00),
(1, 21232000, 2855000, 1490000, 1425000, 1025000, 1100000, 27223.00, 2172900.00, 159760.00, 2172000.00, 267322.00, 885500.00, 551312.00, 660000.00, 222500.00, 220000.00, 290000.00, 880000.00);

Ich verstehe einfach nicht warum ich die doppelte Zeile nicht löschen bzw. editieren kann.

Gremlin
12.05.2008, 19:47
DELETE FROM `xxxxxxxxxxx` WHERE `Array`='1' AND `Array`='20050000' AND `Array`='2810000' AND `Array`='1490000' AND `Array`='1425000' AND `Array`='1025000' AND `Array`='1100000' AND `Array`='27352.00' AND `Array`='1463700.00' AND `Array`='186052.00' AND`Array`='2145000.00' AND `Array`='267322.00' AND `Array`='885500.00' AND `Array`='551312.00' AND `Array`='660000.00' AND`Array`='222500.00' AND `Array`='220000.00' AND `Array`='290000.00' AND `Array`='880000.00' MySQL meldet:
Wieso hast du dann in der WHERE Bedingung ein Feld Array drin? Ich vermute mal du setzt den query in php zusammen und nutzt statt einer variablen irgendwo ein Array.

Gruß
Gremlin

Frejia
12.05.2008, 19:50
Nope, ich versuche die doppelte Zeile direkt im PHPMyAdmin zu löschen, was nicht funktioniert. die PHP Zugriffe funktionieren ja, nur das halt in beide Zeilen gleichzeitig geschrieben wird wenn am Slot gespielt wird. Das Array kam vom MySQLDumper den ich aber nur in Betrieb genommen hatte weil ich im MyAdmin nicht weitergekommen bin.

Edit: Ich habe das Problem jetzt provisorisch gelöst indem ich die komplette betroffene Tabelle gelöscht und neu angelegt habe.

dragon11
13.05.2008, 14:56
Nope, ich versuche die doppelte Zeile direkt im PHPMyAdmin zu löschen, was nicht funktioniert. die PHP Zugriffe funktionieren ja, nur das halt in beide Zeilen gleichzeitig geschrieben wird wenn am Slot gespielt wird. Das Array kam vom MySQLDumper den ich aber nur in Betrieb genommen hatte weil ich im MyAdmin nicht weitergekommen bin.

Edit: Ich habe das Problem jetzt provisorisch gelöst indem ich die komplette betroffene Tabelle gelöscht und neu angelegt habe.


eine Lösung wäre gewesen: in der 2. Zeile die Slotid auf 2 zu setzen, danach genau diesen Satz löschen.

Frejia
13.05.2008, 15:34
eine Lösung wäre gewesen: in der 2. Zeile die Slotid auf 2 zu setzen, danach genau diesen Satz löschen.

Ich konnte die Tabelle ja auch nicht editieren und genau das Problem tritt jetzt schon wieder auf. Ich habe zwar jetzt nur so wie es sein sollte eine Zeile in der Tabelle, aber die lässt sich wieder nicht mehr editieren.

Gremlin
13.05.2008, 16:16
mach mal

REPAIR TABLE tablename;

Gruß
Gremlin

dragon11
13.05.2008, 16:33
es ist sowieso sehr fraglich, wie es passieren konnte, dass der Satz doppelt rein kommt, wenn von anfang an:
KEY `slotid` (`slotid`)

gesetzt war. Am besten wäre es vielleicht, die Tabelle zu löschen und
sie neu anzulegen, die Werte hast du ja, achte darauf dass der key primery ist.

Sollte das alles nicht helfen, melde dich per icq heute abend mal bei mir.

Frejia
13.05.2008, 19:57
mach mal

REPAIR TABLE tablename;

Gruß
Gremlin

Habe ich gemacht, ändert leider nichts am Problem.



es ist sowieso sehr fraglich, wie es passieren konnte, dass der Satz doppelt rein kommt, wenn von anfang an:
KEY `slotid` (`slotid`)
gesetzt war.

Das war wie gesagt auf einen Missglückten Versuch ein Backup der Tabelle einzuspielen zurückzuführen.



Am besten wäre es vielleicht, die Tabelle zu löschen und
sie neu anzulegen, die Werte hast du ja, achte darauf dass der key primery ist.


Das hatte ich ja gestern schon gemacht, nur das der Key auf INDEX steht. Wenn ich das auf Primary setzen will heißt das ganze auch zwangsläufig nicht mehr Slot ID sondern ebenfalls Primary.
Auch ohne den Key hat die Tabelle ja gestern kurz ihren Dienst getan, aber nach 5 Minuten wieder angefangen zu spinnen. Nachdem jetzt auch die doppelte Zeile weg ist, ist die Fehlfunktion nicht mehr ganz so dramatisch, die Gewinnausschüttung und der Fall der JP´s läuft soweit ich das sehen kann normal und ich bin die Gamelogs genau durchgegangen.

dragon11
14.05.2008, 12:09
Der Key muß primary sein, wie er dann heißt ist eigentlich egal.

(...where slotid='1'...) <--- bezieht sich auf den Feldnamen

breaker
14.05.2008, 15:02
Ich habe in der Winout Tabelle von einem Slot die Winout Zeile mit den Jackpot Werten und Gewinntopf Werten doppelt. Die Werte unterscheiden sich minimal aber wachsen in beiden Zeilen mit jedem Dreh an. Normalerweise sollte da nur eine Zeile sein. Das Problem ist nur das sich das Duplikat nicht löschen. Unter PHPMyAdmin kommt keine Fehlermeldung wenn ich die Zeile löschen möchte, aber es passiert auch nix. Der Befehl wird scheinbar ausgeführt aber danach ist noch alles beim alten. Im MySQLDumper wird wenigstens eine Fehlermeldung ausgegeben:


MySQL-ERROR Fehler bei der Anfrage:

DELETE FROM `xxxxxxxxxxx` WHERE `Array`='1' AND `Array`='20050000' AND `Array`='2810000' AND `Array`='1490000' AND `Array`='1425000' AND `Array`='1025000' AND `Array`='1100000' AND `Array`='27352.00' AND `Array`='1463700.00' AND `Array`='186052.00' AND`Array`='2145000.00' AND `Array`='267322.00' AND `Array`='885500.00' AND `Array`='551312.00' AND `Array`='660000.00' AND`Array`='222500.00' AND `Array`='220000.00' AND `Array`='290000.00' AND `Array`='880000.00' MySQL meldet:

Unknown column 'Array' in 'where clause'

Wie kann ich den Fehler beheben? Ich befürchte das wenn ein Jackpot gewonnen wird der Wert aus beiden Zeilen ausgeschüttet wird.

Edit: Nach einem Update vom MySQLDumper wirft er keine Fehlermeldung mehr aus, aber das Problem bleibt das selbe. Wenn ich die Zeile editieren will kommt aber im PHPMyAdmin folgende Meldung: MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen).

Ich mag solche Scripte ;D

Exportiere die Tabelle manuell, lösche in der Datei die Zeile manuell, dann in der DB die komplette Tabelle löschen und die Edierte Datei importieren ;)

Frejia
14.05.2008, 21:49
Vielen Dank schonmal für eure Hilfe. Wenn das Fußballspiel rum ist werde ich mich mal dran setzen und die vorgeschlagenen Möglichkeiten abarbeiten und mich dann hier wieder zu Wort melden.