[SQL allgemein] NOT null einstellen mit PHPMYadmin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [SQL allgemein] NOT null einstellen mit PHPMYadmin

    Hallo, ich bin mit MySql und PHPmyadmin am experimentieren.
    Früher gab es dort eine Möglichkeit einzustellen,dass ein bestimmter Wert eingegeben werden muss, ansonsten hat die DB, das ganze Tuppel nicht akzeptiert und nichts eingetragen.
    Dieses Attribut hatte den namen NOT NULL, wenn ich mich jetzt nicht täusche.
    Haben die Programmierer von PHPmyadmin das Atribut rausgenomme oder finde ich das nich mehr?
    Ich habe die Version 2.5.3 von PHPmyadmin

    grüße
    zabarax

  • #2
    habe jetzt nicht die 2.5.3 zur Hand, aber ich kann mir nicht vorstellen dass es fehlt. Vielleicht ein Bug? Nein, eigentlich unmöglich.

    Feld hinzufügen -> Null ist dann eine Selectbox
    [Test] MySQL cli Emulator

    Kommentar


    • #3
      Doch, ich vermute mal die Version hat ein Bug.
      Ich wollte eigentlich ein verhondenes Attribut auf 'not null'
      setzen. Das Dropdown menü für not null habe ich auch gefunden,
      aber es hat keine Wirkung auf die Datenbank.
      Ich klicke auf Struktur->Icon ändern und klicke in der Spalte
      NULL im dropdownmenü NOTNUll an.


      So sieht das Ergennis aus



      ALTER TABLE `tab_people` CHANGE `Anrede` `Anrede` VARCHAR( 5 ) NOT NULL
      Die Datenbank akzeptiert aber imer noch Datensätze in der Tabelle tab_peoople, auch wenn ich im Feld Anrede nichts eintrage.
      Das ist irgendwie seltsam

      Kommentar


      • #4
        Original geschrieben von zabarax

        Die Datenbank akzeptiert aber imer noch Datensätze in der Tabelle tab_peoople, auch wenn ich im Feld Anrede nichts eintrage.
        Das ist irgendwie seltsam
        bist du sicher?

        [ ] du weisst, dass NULL <> ''

        Kommentar


        • #5
          PHP-Code:
          [ ] du weisstdass NULL <> '' 
          Das sagt mir rein gar nix.

          Ja bin sicher.

          Ich bin jetzt extra mal auf dei Exportfunktion von PHPMYadmin gegangen um mir die SQl Befehle bzw. den Aufbau nochmal anzusehen.

          PHP-Code:
          CREATE TABLE `tab_people` (
            `
          Anredevarchar(5NOT NULL default '',
            `
          Vornamevarchar(15NOT NULL default '',
            `
          Nachnamevarchar(15NOT NULL default '',
          TYPE=MyISAM
          Also es ist 100% NOT NULL beim Tabellenaufbau verwendet worden.

          Ich kann auch gerne mal die SQL Datei vom Datenbankbackup vollständig hier anhängen.

          Kommentar


          • #6
            Die Datenbank akzeptiert aber imer noch Datensätze in der Tabelle tab_peoople, auch wenn ich im Feld Anrede nichts eintrage.
            Das ist irgendwie seltsam
            Was meinst Du mit "nichts eintrage" ?
            Wo, also über PMA?
            Es wird wohl ein leerer String übermittelt und in die DB eingetragen, und ein leerer String ist nicht NULL, nur NULL ist NULL
            Ok, also weißt schon wie es gemeint ist oder?
            [Test] MySQL cli Emulator

            Kommentar


            • #7
              Original geschrieben von zabarax

              PHP-Code:
              CREATE TABLE `tab_people` (
                `
              Anredevarchar(5NOT NULL default '',
                `
              Vornamevarchar(15NOT NULL default '',
                `
              Nachnamevarchar(15NOT NULL default '',
              TYPE=MyISAM
              durch deine Spaltendefinition akzeptiert die DB natürlich alles, denn falls nichts (NULL) da ist, wird einfach '' eingetragen, noch Fragen?

              [x] du möchtest dringend Grundlagen nachholen.

              Kommentar


              • #8
                Wo kann ich denn die Grundlagen zu MySql nachholen?
                Zu PHP gibts ja einiges und zu Mysql kenne ich nur das Manual,
                was ich nicht so übersichtlich finde.

                Wie müsste die Tabelle aussehen, damit die DB nur komplette Tuppel annimmt?

                Kommentar


                • #9
                  Ähm im Netz kenne ich eigentlich nur das von mysql.com und das reicht mir völlig.

                  b2t: nimmt default '' bei allen 3 raus, dann akzeptiert die DB nur Eintragungen, bei denen alle 3 Werte was enthalten.

                  btw: füge noch eine ID-Spalte als AUTO_INCREMENT ein, um die Datensätze eindeutig zu identifizieren.
                  Zuletzt geändert von asp2php; 01.10.2004, 22:08.

                  Kommentar


                  • #10
                    Danke, also ich werd es kommende Woche versuchen, hab die DB jetzt leider nicht vor mir bzw keinen Zugriff.
                    Eine fortlaufende Nummer mit autoincreament habe ich drin, und auch noch wesentlich mehr Atribute. Zum Fehlereingrenzen, hatte ich aber die Datenbank testweise nur auf die drei Werte verkleinert und die ID vergessen.

                    zabarax

                    Kommentar


                    • #11
                      Also ich habe jetzt doch noch zeit gefunden und habe das,
                      was asp2php gesagt hat mal ausprobiert.

                      Original geschrieben von asp2php
                      b2t: nimmt default '' bei allen 3 raus, dann akzeptiert die DB nur Eintragungen, bei denen alle 3 Werte was enthalten.
                      Ich habe mir jetzt eine Textdatei mit folgendem Inhalt angelegt
                      PHP-Code:
                      CREATE TABLE `tab_people` (
                        `
                      Anredevarchar(5),
                        `
                      Vornamevarchar(15) ,
                        `
                      Nachnamevarchar(15) ,
                        ) 
                      TYPE=MyISAM
                      Wenn ich die Datei mit PHPmyadmin importiere, wird dieser Inhalt erneut angezeigt.


                      PHP-Code:
                      Ihr SQL-Befehl wurde erfolgreich ausgeführt. (die Abfrage dauerte 0.0152 sek)
                       
                      SQL-Befehl : [Bearbeiten] [PHP-Code erzeugen]
                      CREATE TABLE `tab_people` (
                      `
                      Anredevarchar) ,
                      `
                      Vornamevarchar15 ) ,
                      `
                      Nachnamevarchar15 ) ,

                      TYPE MYISAM 
                      Wenn ich dann in PHPmyadmin auf einfügen gehe und z.b. nur den Vornamen eintrage, also z.B. Klaus passiert folgendes

                      PHP-Code:
                      SQL-Befehl : [Bearbeiten] [PHP-Code erzeugen]
                      INSERT INTO `tab_people` ( `Anrede` , `Vorname` , `Nachname` ) 
                      VALUES (
                      NULL 'Klaus'NULL 
                      ); 
                      Hier sollte ja eigenltich die Datenbank dann eine Fehlermeldung bringen und gar nichts eintragen.

                      Wenn ich dann mit PHPmyadmin die Tabellenstruktur exportiere, sieht das Ergebnis wieder so aus.

                      PHP-Code:
                      #
                      # Tabellenstruktur für Tabelle `tab_people`
                      #

                      CREATE TABLE `tab_people` (
                        `
                      Anredevarchar(5) default NULL,
                        `
                      Vornamevarchar(15) default NULL,
                        `
                      Nachnamevarchar(15) default NULL
                      TYPE=MyISAM;

                      #
                      # Daten für Tabelle `tab_people`
                      #

                      INSERT INTO `tab_peopleVALUES (NULL'Klaus'NULL); 
                      Er macht mir also automatisch die Defaultwerte rein.
                      Also habe ich dann doch eine fehlerhafte version?

                      Wo im Manual finde ich die Tabellendefinitionen?
                      Ich habe im
                      Manual
                      unter punkt 4.3.2 (Eine Tabelle erzeugen) gesehen, aber da geht man auf die Punkte null und default nicht ein.

                      zabarax

                      Kommentar


                      • #12
                        kann es sein, dass du überhaupt nicht mit PMA umgehen kannst

                        Es ist mir nun, ehrlich gesagt, sch**ß egal wie du es machst, aber dein Ziel ist:
                        PHP-Code:
                        ...
                        `
                        Anredevarchar(5NOT NULL,
                        `
                        Vornamevarchar(15NOT NULL,
                        `
                        Nachnamevarchar(15NOT NULL,
                        ... 

                        Kommentar


                        • #13
                          asp2php sagte "nimm default '' raus", Du hast aber auch NOT NULL rausgenommen...
                          [Test] MySQL cli Emulator

                          Kommentar


                          • #14
                            Diese Version mit nur default raus hatte ich auch schon mal ausprobiert, aber zuletzt dann die letzte Version gepostet.

                            Also hier nochmal

                            Die Ausgangsversion
                            PHP-Code:
                            CREATE TABLE `tab_people` (
                              `
                            Anredevarchar(5NOT NULL default ' ',
                              `
                            Vornamevarchar(15NOT NULL default ' ',
                              `
                            Nachnamevarchar(15NOT NULL default ' ',
                            TYPE=MyISAM
                            jetzt meine neue Textdatei mit nur default und den '' raus.


                            PHP-Code:
                            SQL-Befehl : [Bearbeiten] [PHP-Code erzeugen]
                            CREATE TABLE `tab_people` (
                            `
                            AnredevarcharNOT NULL ,
                            `
                            Vornamevarchar15 NOT NULL ,
                            `
                            Nachnamevarchar15 NOT NULL 
                            TYPE MYISAM 
                            und wenn ich was eintrage,
                            PHP-Code:
                            INSERT INTO `tab_people` ( `Anrede` , `Vorname` , `Nachname` ) 
                            VALUES (
                            '''ddd'''
                            ); 
                            meckert PHPmyadmin wieder nicht. Sobald aber bei einem querry ein Semikolon fehlt, hagelt es dicke Fehlermeldungen.

                            Bei der exportierten Version der Tabelle, ist dann auch wieder
                            default vorhanden.
                            PHP-Code:
                            CREATE TABLE `tab_people` (
                              `
                            Anredevarchar(5NOT NULL default '',
                              `
                            Vornamevarchar(15NOT NULL default '',
                              `
                            Nachnamevarchar(15NOT NULL default ''
                            TYPE=MyISAM

                            Kommentar


                            • #15
                              Original geschrieben von zabarax
                              und wenn ich was eintrage,
                              PHP-Code:
                              INSERT INTO `tab_people` ( `Anrede` , `Vorname` , `Nachname` ) 
                              VALUES (
                              '''ddd'''
                              ); 
                              meckert PHPmyadmin wieder nicht.
                              Warum sollte MySQL da meckern? Für die Spalte hast Du Varchar gewählt und Du trägst ein '' ein, ist doch alles OK.
                              Wenn Du aber folgendes machst ->
                              PHP-Code:
                              INSERT INTO `tab_people` ( `Anrede` , `Vorname` , `Nachname` ) 
                              VALUES (
                              NULL'ddd'NULL
                              ); 
                              müßtest Du ein "Column 'Anrede' cannot be null" bekommen
                              [Test] MySQL cli Emulator

                              Kommentar

                              Lädt...
                              X