[vz-dev] Keine Dateninsert mehr möglich

Thorben Thuermer r00t at constancy.org
Fri Aug 17 02:43:07 CEST 2012


On Thu, 16 Aug 2012 23:15:10 +0200
Justin Otherguy <justin at justinotherguy.org> wrote:
> Am 16.08.2012 um 11:09 schrieb eise:
> > beim Aufruf der Middelware kommt folgender Fehler:
> > Aufruf:  volkszaehler/htdocs/middleware.php/data/b4b69f90-2d45-11e1-90dd-55229431c1f9.json?operation=add&value=1.0
> > Fehlermeldung:
> > {"version":"0.2","exception":{"message":"SQLSTATE[21S01]: Insert value list
> >  does not match column list: 1136 Column count doesn't match value count at
> >  row 1","type":"PDOException","code":"21S01"}}
> > 
> > Mehr Infos sind im Bugtracker unter: http://bugs.volkszaehler.org/view.php?id=136
> > 
> > Wäre für jeden Hinweis oder Ideen dankbar
> Hast Du noch Platz auf dem Filesystem?

nochmal zum mitschreiben fuer alle:
bei einer vollen festplatte bleiben mysql anfrangen einfach haengen.
(bis wieder platz frei ist, oder man den server gewaltsam beendet.)

> Um das einzugrenzen (auf dem Server tut's nicht, lokal tut's):
> - wie unterscheiden sich die beiden Umgebungen?
> - was passiert, wenn Du eine neue DB auf dem Server aufsetzt und 
>   die bestehenden Skripte dagegen laufen lässt?
> - was passiert, wenn Du die Skripte auf dem Server neu installierst
>    und gegen die bestehende DB laufen lässt?
>    (vorher würde ich ein Backup erstellen)

wenn wir dann schon beim wilden herumprobieren sind,
nochmal so herum:
"Column count doesn't match value count"
bedeutet, dass bei einem insert statement mit VALUES()-konstrukt,
die anzahl der gegebenen werte nicht mit den gegebenen spalten uebereinstimmt.

da die gesamte erzeugung von sql-statements wohl von doctrine erledigt wird,
wuerde also am ehesten ein bug in doctrine als erklaerung in frage kommen.
(wurde vlt. die doctrine-installationn auf deinem system zum fraglichen zeitpunkt
 veraendert? vlt. muss man nach einer aenderung der doctrine-installation auch
 die von doctrine autogenerierten files neu erzeugen?)

folgende query aus  middelware_debug.txt scheint ja die problematische zu sein:
> "sql": "INSERT INTO data (timestamp, value, channel_id) VALUES (?, ?, ?)",
> "params": {
>	"1": 1.34278408356e+12,
>	"2": "1.0",
>	"3": 3
> },

wobei die ja soweit OK aussieht.
interessanterweise werden da auch irgendwie prepared-statements benutzt
(die query mit ?-platzhaltern), was solche probleme eigentlich sowieso
ausschliessen sollte...

vermutlich ist das obige doch nicht die problematische query, oder
die wird spaeter vor der ausfuehrung noch irgendwie falsch konvertiert,
weiter zu debuggen waehre dann wohl, was in Doctrine/DBAL/Statement.php
dann am ende ausgefuehrt wird, da muss man wohl mal ein paar weitere
debug-ausgaben einbauen.

(was auch auffaellt: der timestamp in exponten-notation ist
 etwas merkwuerdig... selbst wenn mysql das korrekt verarbeitet (sollte es)
 bedeutet das, dass irgendwo im php-code der wert als float mir zu kleiner
 praezision gespeichert wird, und so genauigkeit verlorengeht,
 wobei noch die frage ist, wozu man da ueberhaupt millisekunden braucht.)

> Gruss, J.

- T.


More information about the volkszaehler-dev mailing list