Forum: PC-Programmierung mysql C++ Linux


von Markus K. (Gast)


Lesenswert?

Hallo zusammen
Ich habe das Problem das ich in einer Schleife ca. 50 "Insert" Queries 
ausführe.
1
sprintf(msg,"INSERT INTO `loggdb`.`temp1` (Wert) VALUES ('%u');",wert);
2
mysql_real_query(conn,msg,strlen(msg));
Leider steht dann nur ein Datensatz in der Datenbank. ????
Werte ändern sich! Nur Tabelle ist im Moment immer die gleiche.
Wenn ich eine Pause einfüge klappt es!!
Das kann doch nicht sein oder??
Hab mit START TRANSACTION, COMMIT schon probiert.
Hab gelesen das man myisam_bulk_insert_tree_size oder key_buffer_size 
grösser machen kann. Ich finde aber die Standard werte müssen doch 
reichen. Bin der einzige der auf die db zugreift.

Komm nicht mehr weiter. Kann mir jemand einen Tipp geben?
Danke

von Werner P. (Gast)


Lesenswert?

frag doch mal sql_error ab

von Markus K. (Gast)


Lesenswert?

Endlich.

Vielen vielen Dank. Dein Tipp mit mysql_error hat mir folgenden Fehler 
ausgegeben:
1
Fehler: Duplicate entry '2012-03-31 14:55:57' for key 'PRIMARY'
Also bei der Spalte mit dem Zeitstempel "Primary Key" deaktivieren und 
schon funktioniert es.

Man das hätte ich auch schon früher machen können mit dem error.
Vielen vielen Dank.

von D. I. (Gast)


Lesenswert?

Eine timestamp-Spalte als PRIMARY KEY zu definieren scheint mir nicht 
besonders sinnvoll.

Weißt du überhaupt was du tust?

von Markus K. (Gast)


Lesenswert?

@D. I.

Ja das mit dem PRIMARY KEY hast du absolut recht.
Die Spalte war mal die ID mit  AUTO_INCREMENT so kam das zustande:-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.