# Mysql hängt sich auf



## Manuela (17. Nov 2009)

Hallo,
ich habe ein problem mit einem SQL string 

```
UPDATE geber set wert='EINGESTELLT' where ID IN (SELECT ID FROM nehmer 
WHERE zeit='vormittag' AND arbeiten ='DURCHGANG')
```


wenn ich diesen String auf die Mysql Datenbank loslasse hängt sich die Datenbank auf.


```
SELECT ID FROM nehmer 
WHERE zeit='vormittag' AND arbeiten ='DURCHGANG'
```
bekomme ich meine ID's (45 Stück) 

wo habe ich da einen Fehler ?? 

Gruß Manuela


----------



## tfa (17. Nov 2009)

> hängt sich die Datenbank auf


Was heißt denn das? Gibt's eine Fehlermeldung?


----------



## Manuela (17. Nov 2009)

Hallo,

nein es gibt keine Fehlermeldung,
die Datenbank macht so als will sie den sql-Befehl bearbeiten und es passiert nicht.
und ich kann mit anderen Rechnern nicht mehr auf die Datenbank zufreifen.
Nach 20 min schieße ich die Datenbank ab, und der sql-Befehl wurde nicht verarbeitet.

Gruß Manuela


----------



## SlaterB (17. Nov 2009)

funktioniert 
UPDATE geber SET wert='EINGESTELLT'
auf die ganze Tabelle,
oder
UPDATE geber SET wert='EINGESTELLT' where id = ein konkreter Wert aus der Liste, notfalls mit allen 45 einzeln testen
?

passiert vorher noch was anderes mit der Datenbank?
wenn jemand anders eine offene Transaktion hat, dann darf solange nichts geändert werden

> und ich kann mit anderen Rechnern nicht mehr auf die Datenbank zugreifen.

wie stellt sich das dar, bleiben die auf hängen, oder Fehlermeldungen?


----------



## Manuela (17. Nov 2009)

Hallo,

ja das habe ich als erstes probliert das funktioniert.

ich kann mit nur Vorstellen das ich "IN" nicht in Verbindung mit  einem update nutzen kann.
dass wäre ganz schön dumm.

Gruß Manuela


----------



## Manuela (17. Nov 2009)

Hallo,

ich habe da noch einen Test gemacht

```
SELECT * FROM geber  WHERE ID IN (SELECT ID FROM nehmer 
WHERE zeit='vormittag' AND arbeiten ='DURCHGANG')
```

das geht auch nicht.
da ist das gleiche verhalten, auch wenn kein anderer oder irgend eine Transaktion läuft.

seltsam oder ???

gruß Manuela


----------



## SlaterB (17. Nov 2009)

ich finde es auch seltsam, mehr kann ich dazu aber nicht sagen


----------



## homer65 (17. Nov 2009)

Hatt den die Tabelle geber einen Index auf dem Feld id?


----------



## Manuela (17. Nov 2009)

Hallo,
jede einzelne SQL string ansich wird ausgeführt aber sobald ich das IN verwende geht es nicht mehr.

das Select in der IN Klammer ergibt halt Zahlen so wie es auch sein soll.
benutze ich anstatt den SQL String in der Klammer die Zahlen dann funktioniert das update
aber was soll den dass. 

ich finde es schon merkwürdig wenn ich eine  Temp-Tabelle anlegen muß um mit den Daten (ID) 
weiter zu arbeiten. Dann ist die Datenbank gaga oder wo ist mein Fehler ????

Gruß Manuela


----------



## Meldanor (17. Nov 2009)

Überprüf mal deine Datenbank, ob diese "in Ordnung" ist.
Weil ich sehe keinen Fehler in der Query und würde eher ein schwerwiegenderes Problem vermuten.


----------



## maki (17. Nov 2009)

```
SELECT * 
FROM geber
WHERE id IN (
    SELECT ID 
    FROM nehmer 
    WHERE zeit='vormittag' 
    AND arbeiten ='DURCHGANG'
    LIMIT 1
)
```
Was passiert damit?


----------



## Manuela (17. Nov 2009)

Hallo,

wenn ich deinen SQL befehl ausführe 

```
SELECT * 
FROM geber
WHERE id IN (
    SELECT ID 
    FROM nehmer 
    WHERE zeit='vormittag' 
    AND arbeiten ='DURCHGANG'
    LIMIT 1
)
```

bekomme ich eine Exception : This version of MySQM doesn't yet support LIMIT & IN/ALL/ANY/SOME subquery

gehe ich hin und führe

```
SELECT ID 
    FROM nehmer 
    WHERE zeit='vormittag' 
    AND arbeiten ='DURCHGANG'
    LIMIT 1
```
dann bekomme ich eine ID angezeigt.

Gruß Manuela
ps.: Mysql 5.1.30 -community via TCP/IP version


----------



## maki (17. Nov 2009)

> bekomme ich eine Exception : This version of MySQM doesn't yet support LIMIT & IN/ALL/ANY/SOME subquery


ooops.. 

Würde es mal mit einem Update auf 5.1.40 probieren, sonst fällt mir auch nicht viel ein...

Ps: Bekommst du den Fehler auch wenn du es per Kommandozeilen Client probierst?

Pps: Vielleciht solltest du statt 5.1.40 lieber einen 5.0.* Server installieren? :bahnhof:???:L


----------



## Manuela (17. Nov 2009)

Hallo,

ja ich teste das gerade mit dem Administrator und QueryBrowser,

Kannst du mir mal auf die Sprünge helfen, es gibt doch irdendein SQL Befehl mit dem man erkennen kann was gerade mit der Datenbank gemacht wird. z.b. man sieht wer alles auf der datenbank ist wer welche Transaktion ausführt usw... wir auf der komando ebene ausgeführt.
Habe ich schon mal gemacht aber vergessen wie das ging.

Gruß Manuela


----------



## maki (17. Nov 2009)

[sql]show full processlist[/sql]
?


----------



## Manuela (17. Nov 2009)

Hallo,
nein das war wie so ein Überwachungstool aber nur auf der console
Gruß Manuela


----------

