T-Rex: mysql Dilemma bei default und not null

Moin,

ich schaue mir gerade die Beschreibung einer Tabelle mittels "describe 'Tabellenname'" an. Es wird eine temporäre Tabelle mit den Informationen generiert. In der Spalte "Null" steht überall "NO", was auch stimmt. In der Spalte "Default" steht bei zwei Tabellenspalten hingegen "NULL".

Jetzt bin ich etwas konfus was jetzt stimmt. Oder wird bei einem insert bzw. update das Default Null automatisch in einen leeren String umgewandelt?

Gruß Konfuziger T-Rex

  1. Hallo T-Rex,

    Jetzt bin ich etwas konfus was jetzt stimmt.

    Wenn ich wegen eines IT-Phänomens konfus bin, folge ich diesem Algorithmus:

    function solve(strange_thing)
    {
       do {
          strange_thing.tryout();
          manual.read();
       } until (strange_thing.is_understood || brain.is_fried);
    
       if (!strange_thing.is_understood && !web.search(strange_thing))
          forum.ask(strange_thing);
    }
    

    Bis forum.ask() komme ich nur in den seltensten Fällen. Zweck des Algorithmus ist: Wenn ich etwas nicht kapiere, investiere ich zuerst meine eigene Zeit. Zumeist lerne ich dabei mehr, als ich vorher nicht gewusst habe.

    Also - welche Ergebnisse erzielst Du bei Anwendung meines Algorithmus? Es ist wirklich nicht schwer.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo,

      Wenn ich wegen eines IT-Phänomens konfus bin, folge ich diesem Algorithmus:

      function solve(strange_thing)
      {
         do {
            strange_thing.tryout();
            manual.read();
         } until (strange_thing.is_understood || brain.is_fried);
      
         if (!strange_thing.is_understood && !web.search(strange_thing))
            forum.ask(strange_thing);
      }
      

      das mit dem Ausprobieren hatten wir kürzlich schon einmal - dass das für mich erst eine Alternative ist, wenn ich alle anderen Ansätze ausgeschöpft habe. Bei mir sieht der Algorithmus eher so aus:

      function solve(StrangeThing)
       { info = web.search(StrangeThing);
         if (info.solves(StrangeThing))
            return (SUCCESS);
      
         for (component in StrangeThing.Components)
            info[] = component.examine();
         if (info.solves(StrangeThing))
            return (SUCCESS);
      
         info = forum.ask(StrangeThing);
         if (info.solves(StrangeThing))
            return (SUCCESS);
      
         while (Nerves)
            random().try(StrangeThing);
      
         return (FAILURE);
       }
      

      Bis forum.ask() komme ich nur in den seltensten Fällen. Zweck des Algorithmus ist: Wenn ich etwas nicht kapiere, investiere ich zuerst meine eigene Zeit.

      Das versuche ich auch. Wenn ich aber vermute, dass jemand anders das Problem kennen könnte und möglicherweise eine Lösung in fünf Minuten aus dem Ärmel schütteln kann, nehme ich diese Möglichkeit auch gern in Anspruch, bevor ich anfange, ziellos im Nebel zu stochern.

      Zumeist lerne ich dabei mehr, als ich vorher nicht gewusst habe.

      Ganz bestimmt. Oft ist es auch hilfreich, Leute zu fragen, die vom Thema wenig bis gar keine Ahnung haben. Denn einem Laien muss man das Problem erst von Grund auf klarmachen. Dabei stößt man oft selbst auf die entscheidende Kleinigkeit, die man bis dahin immer übersehen hat.

      Live long and pros healthy,
       Martin

      --
      Home is where my beer is.
      1. Hallo Martin,

        ich wollte hier nicht "Rumprobieren" empfehlen, sondern das, was merkwürdig aussieht, einfach mal auszuprobieren und zu gucken, was passiert. Das ist etwas anderes als das experimentelle Ermitteln von CSS Selektoren oder von SQL Statementbauteilen.

        random().try(StrangeThing);

        ist eigentlich nie eine Lösung. Die Monte Carlo Methode kann in der Statistik nutzen, ist beim Programmieren aber genauso hilfreich wie Debug-by-Petunia [1]

        Rolf

        --
        sumpsi - posui - obstruxi

        1. Keine Ahnung wie das damals in der Liste obskurer Debug-Techniken wirklich hieß, ich finde sie nicht mehr wieder. Die Methode besteht prinzipiell darin, das defekte Stück Software auszudrucken, einen Blumentopf auf's Listing zu stellen und eine Nacht zu warten. Bugs, die in der Software sind, krabbeln während der Nacht in die Petunie und können dann draußen entsorgt werden. ↩︎

        1. Hallo Rolf,

          ich wollte hier nicht "Rumprobieren" empfehlen

          das hat mich auch ein bisschen gewundert, aber dein skizzierter Algorithmus sah für mich so aus, als würdest du das als ersten Schritt empfehlen. Aber aufgepasst: Es gibt einen großen Unterschied zwischen Rumprobieren und Rum probieren.
          Wobei letzteres auf ganz krummen Wegen sogar manchmal Erfolgserlebnisse bringt. 😉

          Die Monte Carlo Methode kann in der Statistik nutzen, ist beim Programmieren aber genauso hilfreich wie Debug-by-Petunia

          Bei Petunia war meine erste Eingebung: "Oh no, not again!" [Douglas Adams]

          Die Methode besteht prinzipiell darin, das defekte Stück Software auszudrucken, einen Blumentopf auf's Listing zu stellen und eine Nacht zu warten. Bugs, die in der Software sind, krabbeln während der Nacht in die Petunie und können dann draußen entsorgt werden.

          Sehr netter Ansatz. Bei meinem ersten Arbeitgeber haben mir die Kollegen von meinem Vorgänger berichtet, der wohl recht esoterisch veranlagt gewesen sein muss. Der hat angeblich gern mal zwei, drei Meter Programmlisting ausgedruckt (das Stück, in dem mutmaßlich der Fehler steckte), an die Wand gepinnt und dann davor meditiert und auf die Eingebung gewartet.
          Wirklich erfolgreich war er der Überlieferung zufolge mit der Methode nicht ...

          Live long and pros healthy,
           Martin

          --
          Home is where my beer is.
    2. Das doofe an einem Ablaufplan ist die fehlende vierte Dimension. Denn während hier mein Post auch eine sinnvolle Antwort wartet, habe ich Zeit tatsächlich "rum zu probieren" oder die Dokumentation zu lesen (quasi Multitask). Nimmt man die erste Antwort als Grundlage hätte ich somit ca. 1 Stunde um mich selber schlau zu machen. Nimmt man die letzte sinnvolle und auf das Thema bezogene Antwort so warte ich immer noch auf eine Solche und könnte rein theoretisch immer noch in der Doku schmökern.

      Leider und hier muss ich mal etwas off Topic werden, wird in letzter Zeit (zumindest dieses Jahr) eher Energie in ein "wie kannst du nur so etwas Fragen" gesteckt als in die Herleitung einer Lösung. Auch wird (wie immer eigentlich) auch lieber Zeit in die Auffindung von Kommafehler gesteckt. Da jedoch jeglicher Lösungsansatz fehlt, muss ich mich Fragen ob ich das Experten Forum als das ich selfhtml seit Jahren ansehe noch ein solches ist.

      Und ja ich halte es wie "der Martin". Wozu soll ich eine Doku Stunden lang studieren, wenn jemand die Lösung aus dem Ärmel schütteln kann. Man lernt etwas neues? Ja bestimmt, aber kann ich es auch gebrauchen? Na sicher kann ich das mysql Handbuch auswendig lernen. Aber wenn ich es nicht gebrauchen kann was nützt mir das Wissen? Und um nochmal Offtopic zu werden, dass ist ein generelles Thema. Es leuchtet mir nicht ein, wieso man in einer Abschlussklassen-stufe die Mecklenburgische Seenplatte auswendig lernen muss. Das musste zumindest meine Ex-Frau machen, als sie ihr abi nach machte. Ich schätze mal so 80% von dem Stoff den sie damals lernte braucht sie heute nicht mehr.

      Auch wenn ich ein paar mal am Thema vorbei gequatscht habe, wäre es nett wenn sie Zukünfte Antworten einfach um das Thema drehen.

      Bei meinen Tests die ich mittlerweile durchgeführt habe scheint es aber so zu sein, dass ein Default NULL == "" ist. Zumindest in PHP wird mir bei der Abfrage ein true zurück gegeben.

      Schönen Abend noch

      Gruß T-Rexidus

      1. Hallo T-Rex,

        Da jedoch jeglicher Lösungsansatz fehlt

        Deine Fragen lassen sich mit ein paar schnellen SQL Statements einfach beantworten.

        Oder wird bei einem insert bzw. update das Default Null automatisch in einen leeren String umgewandelt?

        Nein, das gibt eine Fehlermeldung.

        Der Default greift dann aber auch gar nicht. Sondern unter anderen Bedingungen:

        (1) INSERT, wenn die Spalte nicht in der Spaltenliste angegeben ist (2) SET DEFAULT als Referenzaktion an einem Fremdschlüssel

        Wenn Du einen INSERT machst und eine Spalte weglässt, die NOT NULL und ohne Default ist, gibt's auch eine Fehlermeldung. Fremdschlüssel habe ich jetzt nicht probiert.

        Wozu soll ich eine Doku Stunden lang studieren, wenn jemand die Lösung aus dem Ärmel schütteln kann.

        Diese Haltung solltest Du nicht zum Prinzip erheben. Grundwissen schadet nie.

        Rolf

        --
        sumpsi - posui - obstruxi
      2. Hallo T-Rex,

        Denn während hier mein Post auch eine sinnvolle Antwort wartet, habe ich Zeit tatsächlich "rum zu probieren" oder die Dokumentation zu lesen (quasi Multitask). Nimmt man die erste Antwort als Grundlage hätte ich somit ca. 1 Stunde um mich selber schlau zu machen. Nimmt man die letzte sinnvolle und auf das Thema bezogene Antwort so warte ich immer noch auf eine Solche und könnte rein theoretisch immer noch in der Doku schmökern.

        Ja. Du weißt doch, dass es hier Hilfe zur Selbsthilfe gibt.

        Auch wird (wie immer eigentlich) auch lieber Zeit in die Auffindung von Kommafehler gesteckt.

        Das geht manchmal in Nullzeit. Nein, es ist keine Schande, überdurchschnittliche Schwierigkeiten mit der Kommasetzung oder Getrennt- und Zusammenschreibung zu haben.

        Kommas sind nicht unwichtig. Komm, wir essen Opa bekommt mit einem weiteren Komma eine weit weniger morbide Bedeutung.

        Es leuchtet mir nicht ein, wieso man in einer Abschlussklassen-stufe die Mecklenburgische Seenplatte auswendig lernen muss. Das musste zumindest meine Ex-Frau machen, als sie ihr abi nach machte. Ich schätze mal so 80% von dem Stoff den sie damals lernte braucht sie heute nicht mehr.

        Kommt ja auch drauf an, was du mit auswendig lernen meinst. Jeder braucht 80% dessen, was er mal gelernt hat, nicht mehr. Nur leider sind die fehlenden 20% bei jedem andere. Über die Zahl lässt sich streiten. Und es kann auch immer weniger um die Anhäufung von Wissen gehen – das steht praktisch sofort und unbegrenzt zur Verfügung – sondern um den Kompetenzerwerb, eben um die Energie des Verstehens.

        Bis demnächst
        Matthias

        --
        Du kannst das Projekt SELFHTML unterstützen,
        indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
        1. Hallo,

          Es leuchtet mir nicht ein, wieso man in einer Abschlussklassen-stufe die Mecklenburgische Seenplatte auswendig lernen muss. Das musste zumindest meine Ex-Frau machen, als sie ihr abi nach machte. Ich schätze mal so 80% von dem Stoff den sie damals lernte braucht sie heute nicht mehr.

          Kommt ja auch drauf an, was du mit auswendig lernen meinst. Jeder braucht 80% dessen, was er mal gelernt hat, nicht mehr. Nur leider sind die fehlenden 20% bei jedem andere. Über die Zahl lässt sich streiten. Und es kann auch immer weniger um die Anhäufung von Wissen gehen – das steht praktisch sofort und unbegrenzt zur Verfügung – sondern um den Kompetenzerwerb, eben um die Energie des Verstehens.

          Nicht zuletzt gehts auch um das Auswendiglernen ansich, das man nicht nur erlernen, sondern auch trainieren kann bzw. muss.

          Gruß
          Kalk

      3. Lieber T-Rex,

        Leider und hier muss ich mal etwas off Topic werden, wird in letzter Zeit (zumindest dieses Jahr) eher Energie in ein "wie kannst du nur so etwas Fragen" gesteckt als in die Herleitung einer Lösung.

        meine Antwort ging nicht in die Richtung "wie kannst Du nur so etwas fragen?", sondern eher in die Richtung "wie kannst Du nur von so einer konfusen Problembeschreibung erwarten, dass sie jemand versteht, oder gar die Mühe aufbringt, sie bis zum Ende zu lesen?".

        Auch wird (wie immer eigentlich) auch lieber Zeit in die Auffindung von Kommafehler gesteckt.

        Mein Komma-Vorschlag war Sarkasmus, kein Kommafehler Deinerseits.

        Da jedoch jeglicher Lösungsansatz fehlt, muss ich mich Fragen ob ich das Experten Forum als das ich selfhtml seit Jahren ansehe noch ein solches ist.

        Oder Du darfst Dich fragen, wie weit Du im Grad der Zumutbarkeit geblieben bist, was die inhaltliche Qualität Deiner Problembeschreibung angeht. Auf meine sachliche Nachfrage hin, die Begriffe geklärt haben wollte, hast Du mit keiner Silbe reagiert.

        Auch wenn ich ein paar mal am Thema vorbei gequatscht habe, wäre es nett wenn sie Zukünfte Antworten einfach um das Thema drehen.

        Das ist Deine Perspektive. Als potenziell Antwortender erwarte ich von Dir mehr Sorgfalt beim Beschreiben, damit ich Dein Problem besser oder sogar leichter nachvollziehen kann. Immerhin erwartest Du von den Antwortenden hier, dass sie Dir unentgeltlich helfen und ihre Freizeit für Dein Problem investieren. Da sollte es der Mindestanstand schon verlangen dürfen, dass Dein Posting auch entsprechend gut zu verstehen ist! Und die Erfahrung, die man hier immer wieder einmal nachlesen kann, zeigt auch, dass die Mühe, welche für eine gut verständlich formulierte Problembeschreibung investiert wurde, bereits ihrerseits zur Lösung geführt hat. Eine solche Chance solltest Du Dir niemals entgehen lassen!

        Liebe Grüße

        Felix Riesterer

  2. Lieber T-Rex,

    In der Spalte "Default" steht bei zwei Tabellenspalten hingegen "NULL".

    Jetzt bin ich etwas konfus was jetzt stimmt.

    ... on so many levels.

    1. Was genau bedeutet im ersten Satz das Wort "Spalte"? Was ist der Unterschied zwischen "Spalte Default" und "Tabellenspalte"?

    2. "Jetzt bin ich etwas konfus was jetzt stimmt." Mit Komma, oder lieber ohne? →
      "Jetzt bin ich etwas konfus, was jetzt stimmt."

    Liebe Grüße

    Felix Riesterer