SELECT MAX(id) liefert in phpmyadmin anderen Wert

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

SELECT MAX(id) liefert in phpmyadmin anderen Wert

Beitrag von mgutt »

Hallo,

also ich kann es mir im Moment nicht erklären.

Die Datenbank umfasst X Millionen Einträge.

In phpmyadmin erhalte ich exakt das Ergebnis, wie laut phpmyadmin Zeilen in der Datenbank sind.

Wenn ich aber den MAX(wert) per php Script abrufe, dann erhalte ich genau 1000 weniger.

Also sagen wir ich hätte laut phpmyadmin 12.001.000 Zeilen, so erhalte ich mit meinem Script 12.000.000 als höchste ID.

Ich muss dazu sagen, dass die Datenbank immer um exakt 1000 Zeilen vergrößert wurde in sehr kurzer Zeit.

Aber ich verstehe einfach nicht, warum die absolut identische Abfrage in phpmyadmin ein anderes Ergebnis liefert als in php.

In php mache ich es wie immer (hat ja ein paar Millionen Zeilen lang funktioniert ;) ). Ich lese die MAX(id) aus (mysql_query und mysql_fetch_row) und füge dann ab da die nächsten 1000 Zeilen hinzu. Hat ca. 6 Stunden lang funktioniert.

Wenn ich übrigens SELECT id mit ORDER BY id DESC und LIMIT 1 mache, dann stimmt die id wieder. Aber bei MAX(id) muss ja irgendwo ein Fehler sein :-?

Datenbank kann ja nicht korrupt sein, wenn die in phpmyadmin richtig ausgegeben wird oder?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Hast du es mal mit einem ganz simplen Code versucht (dreizeiler)? Wenn es in phpMyAdmin funktioniert, liegt der Fehler nämlich mit an Sicherheit grenzender Warscheinlichkeit irgendwo in deinem Script - phpMyAdmin verwendet schließlich auch nur die mysql_* Funktionen.
KB:knigge
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Das ist nur ein Dreizeiler, zwei um genau zu sein:

Code: Alles auswählen

$sql = "SELECT MAX(id) as max
		FROM table";
if ( !($result = @mysql_query($sql)) )
{
	die('db error');
}
if ( $row = @mysql_fetch_row($result) )
{
	$max = intval($row[0]);
}
@mysql_free_result($result);
Nachdem ich jetzt eine Weile ORDER BY genommen habe, funktioniert der MAX() wieder.

Ich nehme jetzt aus Spaß mal wieder MAX(). Ich sag bescheid, wenn das wieder passiert. Sind noch ein paar Millionen ;)
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Führst du in phpMyAdmin auch die Abfrage

Code: Alles auswählen

SELECT MAX(id) as max 
      FROM table
aus?

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Jo, hab sie 1:1 kopiert. Und das nicht nur einmal. Sogar alle Fenster neu aufgemacht, weil ich schon an ein Cacheproblem dachte. Aber hat nicht geholfen.

Ich habe mir dann per print_r() die $row ausgeben lassen und da war eben diese ID mit 1000 weniger drin.

Sowohl bei der Abfrage in phpmyadmin, als auch auf der Seite wo man die Anzahl aller Zeilen pro Tabelle angezeigt bekommt, konnte man dagegen das korrekte Ergebnis sehen.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „Coding & Technik“