mk: mySQL speichert index 0 ???

Hallo Leute,

hat jemand eine Idee, warum eine auf XAMPP entwickelte Datenbank-Aktion das macht, was ich will, nämlich einen Datensatz abspeichern und dabei die ID höchzählt - und warum die Sache bei 1und1 einfach Mal gar nicht funktioniert?

Beim Speichern wird der Datensatz mit ID 0 versehen... Beim Schreiben des nächten Datensatzes, wird wieder die Null versucht als Id zu schreiben, was aber in einem Fehler endet:

MySQL hat diesen Fehler zurückgegeben --> Duplicate entry '0' for key 1

Lokal funktionierts, wunderbar, genauso wie es soll... nur bei 1und1 nicht.

Ich habe mal gar keine Ahnung, wonach ich suchen sollte, geschweige denn was der Fehler sein kann.

Ich steh im Wald. Hat jemand Licht?

Gruß

  1. Hallo mk,

    Klingt so, als haette die Id einmal ein autoincrement und einmal nicht

    Gruß,

    Dieter

    1. Hi Dieter,

      oha! du hast Recht! Komisch! Aber gut zu wissen, dass ein Datenbank-Export aus XAMPP mit Kompatibilität zu mysql40 die autoincrement nicht übernimmt!

      weitersagen!

      mk

  2. Hallo,

    eine Zusätzliche Frage wenn ich stellen darf.

    Hat es einen Sinn, dass MySQL beim zählen mit 1 anfängt und nicht mit Null (bei USIGNED)?

    Oder kann ich die Null wie jede andere Zahl verwenden?

    Danke, T

    1. echo $begrüßung;

      Hat es einen Sinn, dass MySQL beim zählen mit 1 anfängt und nicht mit Null (bei USIGNED)?

      Null ist etwas anderes als 0. Während 0 eine Integer-Zahl ist, ist NULL ein eigener Wert mit Sonderbehandlung und steht für "nicht definiert", "nicht vorhanden". Auch NULL und ein Leerstring "" sind zwei verschiedene Dinge.

      Wenn man rechnet oder vergleicht, und einer der Operanden ist NULL, so ergibt das Ergebnis immer NULL.

      5 + NULL => NULL
      5 + 0 => 5
      0 = NULL  => NULL
      NULL = NULL => NULL
      NULL IS NULL => 1 (quasi true)

      In manchen Anwendungsfällen spielt der Unterschied keine Rolle. Da kann man das Spaltenattribut NOT NULL setzen und die Default-Werte 0 oder Leerstring stehen dann für nicht vorhanden.

      Oder kann ich die Null wie jede andere Zahl verwenden?

      0 nimmt man gern, um in einer Frendschlüsselspalte anzuzeigen, dass es in der Haupt-Tabelle keinen Datensatz gibt. Man könnte dazu auch NULL nehmen. Man kann auch in beiden Werten eine unterschiedliche Bedeutung sehen: 0 = es existiert definitiv kein entsprechender Datensatz in der Haupt-Tabelle. NULL = es ist (noch) nicht definiert, ob ein Datensatz vorhanden ist, beispielsweise dann, wenn noch nicht alle Daten verarbeitet sind, die Beziehung zwischen den Datensätzen der Tabellen erst in einem zweiten Schritt ermittelt und dann nachgepflegt werden.

      echo "$verabschiedung $name";