Sven: Merkwürdige Fehlermeldungen - Falsche Konfiguration?

Hallo,

bei der Einrichtung von verschiedenen CMS erhalte ich Fehlermeldungen, wie z. B. folgende:

MySQL-Database error
Time and Date: 08.04.2009 - 14:35
MySQL error: Field 'uid' doesn't have a default value
MySQL error number: 1364
MySQL query: INSERT INTO phpkit_user SET user_name='admin', user_pw='asd67g7erbe77ad5e5283gf873g', user_status='admin', user_email='meine@email.de',user_nick='admin',signin='1239194130',user_id=1

Spontan könnte man sagen, da fehlt ein Wert. Auf anderen Webspaces funktioniert es aber, auf meinem eigenen jedoch nicht.

Könnten gewisse Konfigurations-Möglichkeiten dafür verantwortlich sein? Gibt es PHP-Variablen, die vielleicht nicht richtig gesetzt sind? Oder hat es etwas damit zutun, dass mein Server unter Windows und nicht unter Linux läuft?

Vielleicht hat jemand ein paar Erfahrungswerte oder kann mir anderweitig helfen?

Grüße
Sven

  1. Tach.

    MySQL-Database error
    Time and Date: 08.04.2009 - 14:35
    MySQL error: Field 'uid' doesn't have a default value
    MySQL error number: 1364
    MySQL query: INSERT INTO phpkit_user SET user_name='admin', user_pw='asd67g7erbe77ad5e5283gf873g', user_status='admin', user_email='meine@email.de',user_nick='admin',signin='1239194130',user_id=1

    Spontan könnte man sagen, da fehlt ein Wert. Auf anderen Webspaces funktioniert es aber, auf meinem eigenen jedoch nicht.

    Liegt vermutlich an unterschiedlichen Versionen oder Einstellungen von MySQL. Mit PHP hat das jedenfalls nichts zu tun.

    Die Fehlermeldung (und die kommt von der Datenbank) an sich ist ja eindeutig: Das Feld uid hat keinen Standardwert, der beim Einfügen des neuen Datensatzes verwendet werden könnte. Entweder muß dieses INSERT explizit einen Wert für uid setzen oder Du gibst dem Feld einen Standardwert.

    --
    Wenn es schwingt, ist es ein Filter – Oszillatoren würden so etwas nie tun.
    1. Hallo,

      Liegt vermutlich an unterschiedlichen Versionen oder Einstellungen von MySQL. Mit PHP hat das jedenfalls nichts zu tun.

      Die Fehlermeldung (und die kommt von der Datenbank) an sich ist ja eindeutig: Das Feld uid hat keinen Standardwert, der beim Einfügen des neuen Datensatzes verwendet werden könnte. Entweder muß dieses INSERT explizit einen Wert für uid setzen oder Du gibst dem Feld einen Standardwert.

      Naja, es sollte normalerweise ja funktionieren, ohne dass man das SQL-Statement anpassen muss. Wäre es also möglich, dass die Entwickler (in diesem Fall PHPKit) ihre Software nur mit MySQL 4 getestet haben, und dies unter MySQL 5.1 jetzt Probleme macht?

      Grüße
      Sven

  2. Hallo,

    bei der Einrichtung von verschiedenen CMS erhalte ich Fehlermeldungen, wie z. B. folgende:

    MySQL-Database error
    Time and Date: 08.04.2009 - 14:35
    MySQL error: Field 'uid' doesn't have a default value
    MySQL error number: 1364
    MySQL query: INSERT INTO phpkit_user SET user_name='admin', user_pw='asd67g7erbe77ad5e5283gf873g', user_status='admin', user_email='meine@email.de',user_nick='admin',signin='1239194130',user_id=1

    vermutlich handelt es sich um einen Bug in diesen CMS. Ist dies der Fall, so melde diesen Bug.

    Spontan könnte man sagen, da fehlt ein Wert. Auf anderen Webspaces funktioniert es aber, auf meinem eigenen jedoch nicht.

    Könnten gewisse Konfigurations-Möglichkeiten dafür verantwortlich sein?

    Eine denkbare Konstellation wäre folgende:

    a) Das Feld uid hat die Eigenschaft NOT NULL
    b) Für das Feld uid ist kein Default-Wert gesetzt (auch kein AUTO_INCREMENT)
    c) MySQL läuft im Strict Mode

    und die CMS-Programmierer haben diesen Fall nicht vorhergesehen.
    Diesen Bug müssten die Entwickler des CMS unbedingt korrigieren, zum Beispiel indem sie in einen Mode schalten, unter dem ihr Code das gewünschte Resultat liefert.

    Bitte prüfe meine Vermutungen. a) und b) erhältst Du zum Beispiel über

    [link:http://dev.mysql.com/doc/refman/5.0/en/show-create-table.html@title=SHOW CREATE TABLE] phpkit_user  
    
    

    Wie Du c) ermittelst, steht im verlinkten Handbuchabschnitt.
    Es ist übrigens (ganz besonders bei MySQL) eine gute Idee, die verwendete Version anzugeben. Diese erhältst Du mit

    SELECT VERSION()

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      Eine denkbare Konstellation wäre folgende:

      a) Das Feld uid hat die Eigenschaft NOT NULL
      b) Für das Feld uid ist kein Default-Wert gesetzt (auch kein AUTO_INCREMENT)
      c) MySQL läuft im Strict Mode

      c) wars! Hab meine Startparameter und die my.ini durchgeschaut - in letzterer fand ich dann den Hinweis auf den Strict Mode. Nun funktioniert's :-) Ich werd dennoch an die Entwickler schreiben.

      Danke!

      Grüße
      Sven