MySQL Auto_increment Wert stimmt nicht?

4 Antworten

MySQL Auto_increment Wert stimmt nicht?

den query cache leeren sollte helfen.

https://dev.mysql.com/doc/refman/5.7/en/query-cache-status-and-maintenance.html

Alex

loderges 
Fragesteller
 05.06.2019, 18:14
SHOW VARIABLES LIKE 'have_query_cache';

Sagt mir ich habe keinen Cache

0
EinAlexander  05.06.2019, 18:18
@loderges
Sagt mir ich habe keinen Cache

Nochmal zum Verständnis: Dein auto increment steht bei 100, du fügst 10 Sätze ein und er steht immer noch bei 100?

0
loderges 
Fragesteller
 05.06.2019, 18:29
@EinAlexander

Nur wenn ich mit "SHOW TABLE STATUS LIKE tabelle" ihn auslesen möchte.

Bei einem Insert-Befehl wird er in die Spalte id korrekt eingetragen

id int(11) AUTO_INCREMENT PRIMARY

Siehe Antwort mit den Bildern.

0

Erstes Bild zeigt den korrekt eingetragener Auto_increment Wert (spalte id)

Bild zum Beitrag

Laut Tabellenoptionen steht er aber bei 4985, wird auch mittels "Status-Abfrage" ausgegeben. Sollte eigentlich 4995 (siehe Bild 1) sein.

Bild zum Beitrag

 - (Computer, Technik, Technologie)  - (Computer, Technik, Technologie)

du könntest auf die tabelle ein insert mit der letzten ID machen das würde das ganze korrigieren , ist bestimmt durch den import passiert beim umzug . es wird ja von mysql einfach der nächste freie platz genommen der muss nicht bei der ID sein die man sich vorstellt .

bzw

ALTER TABLE `users` AUTO_INCREMENT = 1;

For MySQLs it will reset the value to

MAX(id) + 1

.

loderges 
Fragesteller
 05.06.2019, 18:16

Wie bereits geschrieben wird ja bei einem Insert die korrekte ID eingetragen. Wenn ich aber den Status abfrage, erhalte ich einen alten Wert. Selbst nach einigen Insert´s ändert sich dieser nicht.

0
RakonDark  05.06.2019, 18:24
@loderges

geht da was bei neuer tabelle , kann natürlich sein das da irgendwie die tabellen verutscht sind . und was heisst alten wert ? immer der gleiche oder mit einem verschiebung um ein festen wert ?

0
loderges 
Fragesteller
 05.06.2019, 18:30
@RakonDark

Kann durchaus sein dass da was beim Umzug schief gegangen ist oder ein Cache hängt o.ä... WebGo ist bereits kontaktiert.

Der Wert bleibt immer gleich, siehe meine Antwort mit Bilder.

0

Ich denke, dass deine Abfrage zu früh für die Datenbank kommt, die ihre Statistiken erst erneuern muss. Bei vielen und großen Tabellen kann das ein ziemlich aufwendiger Prozess sein.

Generell wäre es wohl besser, wenn du den letzten ID-Wert via SELECT-Query ermitteln würdest. Entweder mit LAST_INSERT_ID oder mittels der MAX-Funktion:

SELECT MAX('id') FROM yourTable;
loderges 
Fragesteller
 05.06.2019, 18:41

Bei einer Tabelle mit nur 5000 Einträgen? Das Problem besteht auch bei kleineren Tabellen und bislang hat es auch problemlos funktioniert.

Übergangsweise habe ich ein paar auf die von dir genannte Funktion insert_id umgeschrieben. Finde die Variante mit INSERT und anschliessend ein UPDATE irgendwie unsauber.

0
regex9  05.06.2019, 18:48
@loderges

Also INSERT + UPDATE wurde ja als Lösung nicht vorgeschlagen.

Auch wenn es nur 5000 Einträge sind, verlangt so ein SHOW-Query mit LIKE-Kriterium ganz bestimmt mehr Aufwand, als notwendig.

Nichtsdestotrotz, zur Erklärung hier noch ein Link zur innodb_stats_on_metadata-Variable, deren Zustand das Problem vielleicht erklären könnte.

1