Reiner: komisches Problem mit Merge-Table (mysql)

Hi,

ich habe ein kleines Problem mit einer Merge-Tabelle:

select max(feld) from merge_table;
ergibt: 0

select feld from merge_table order by feld desc limit 1;
ergibt: 0

select max(feld) from eigentlicher_datentabelle;
ergibt: immer Wert >0

mache ich auf der Merge-Tabelle ein "select * ..." und sortiere die Daten (in phpMyAdmin) nach "feld", funktioniert es auch hier wunderbar.

Zur weiteren Info:
mysql 5.0.22 (werde ich nachher mal upgraden!)
"feld" ist bigint(20)
Daten über alle Feld: ca. 146 Millionen
Größe der Merge-Tabelle: ~12GB

Ich habe die Merge-Definition auch schon mal neu geschrieben, weil ich die Erfahrung gemacht habe, dass es da auch schon mal hakt.

Weitere Info:
Ich hatte, bis ich auf dieses Problem stieß, ein anderes beim Aufruf des max-Wertes:
Got error 124 from storage engine
Das konnte ich aber durch reparieren der Datentabellen beheben. Seitdem tritt eben dieses Phänomen auf.

Hat jemand einen Hinweis für mich?

Danke!

lg
Reiner

  1. Es wird noch besser:

    Nachdem ich mysql mal einfach neu gestartet habe, bekomme ich ein max(feld) ausgespuckt!

    Allerdings sieht der Wert so aus:
    12531820117018804232

    Da mir das doch von der Länge sehr verdächtig vorkam, wollte ich das mal gegenprüfen mit:

    select * from merge_table where feld='12531820117018804232'

    Das Ergebnis ist zum verrückt werden.
    "Natürlich" gibt es den Wert nicht, dennoch werden Reihen ausgespuckt, die angeblich ein Treffer sind. Diese stehen in keinem Verhältnis zu dem Wert oben, weder von der Länge noch vom Anfang/Ende, falls irgendwo künstlich was abgeschnitten sein sollte.

    Kann das mit der Kombination Merge, Bigint und der Datengröße/-menge zusammenhängen?

    lg
    Reiner

    1. Es ist kaum zu glauben:
      Zwei Indices waren in der Reihenfolge vertauscht, d.h. Namen usw. waren absolut korrekt, nur waren sie in falscher Reihenfolge definiert.
      Das halte ich aber für einen sehr schwerwiegenden Bug, denn wenn ich eine Fehlermeldung bekäme, wäre das ok (merge table ..blabla..-Error...). Bekomme ich aber einfach den Wert 0 ausgeworfen, ist das großer Mist.

      Vielleicht ein guter Erfahrungswert - zumindest fürs Archiv?

      lg
      Reiner