Ankündigung

Einklappen
Keine Ankündigung bisher.

Der Designer von phpMyAdmin erzeugt keine Relationen:Bz-funktionen wurde deaktiviert!

Einklappen

Neue Werbung 2019

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

  • Der Designer von phpMyAdmin erzeugt keine Relationen:Bz-funktionen wurde deaktiviert!

    Hallo zusammen,

    seit ca. 2 Monaten bin ich dabei, Grundlagen von php zu lernen.
    Ich benutze dafür den Editor php-storm und das Buch "Einstieg in PHP7 und MySQL 5.6" vom Rheinwerk Verlag.

    Im Buch bin ich gerade auf Seite 232 bei dem Thema "Datenbanken mit MySQL", worum sich auch meine Frage dreht.
    Ich soll in phpMyAdmin mit 4 Tabellen einer Datenbank mithilfe des Designers Relationen setzen und benutze als Datenbank MariaDB 10.4.10.

    Sobald ich versuche eine Verknüpfung zu setzen, wird die Fehlermeldung "Beziehungsfunktionen wurde deaktiviert!" angezeigt.
    Auch die SQL-Anweisung direkt wird nicht ausgeführt.

    Code:
     
     alter table kunde    add constraint kunde_projekt_pr_ku_id_fk       foreign key (ku_id) references projekt (pr_ku_id)          on update cascade;
    Ich hoffe ich habe mein Problem sinnvoll erklärt und es kann mir jemand beim Lösen helfen.

    Danke schonmal im voraus.

    LG

  • #2
    Und wenn du es ohne phpMyAdmin direkt mit SQL machst?

    Vorweg, das hier ist kein Supportforum für phpMyAdmin. Wenn du Probleme mit diesem Software-Produkt hast, solltest du dich eher an den Hersteller bzw. dessen Community richten.

    Kommentar


    • #3
      Ist deine Datenbank ggf. nicht als innodb erstellt?

      Kommentar


      • #4
        Offenbar kann man in der Config von phpmyadmin bestimmte Dinge "freischalten" oder eben nicht, z.B. "drop database". Warum das für FK Constraint möglich sein soll, weiß ich nicht ...
        Vielleicht war der TE zu schnell unterwegs und hat das pädagogisch meisterhaft aufgebaute Buch mitsamt der phpMyAdmin Installation und deren Konfigurationsänderungen an den entscheidenden Stellen nicht durchgearbeitet.

        Kommentar


        • #5
          Zitat von Perry Staltic Beitrag anzeigen
          pädagogisch meisterhaft aufgebaute Buch mitsamt der phpMyAdmin
          Das, also 'pädagigisch meisterhaft' und 'MySQL', paßt nicht zusammen.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Hallo zusammen!

            Vielen Dank für die freundliche Hilfestellung.

            Wie aus den Antworten zu lesen, sollte die DB das innodb Format haben.
            Das nachstehende Script aus dem Buch nutzt das Format: MyISAM und nicht
            innodb.
            Eigentlich hätte ich erwartet, dass das Format MyISAM und innodb Foreign Keys unterstützen. Ist das nicht so?

            Code:
            $sql = "CREATE DATABASE IF NOT EXISTS projektverwaltung";
            mysqli_query($con, $sql);
            
            mysqli_select_db($con, "projektverwaltung");
            
            $sql = "CREATE TABLE IF NOT EXISTS kunde (
                   ku_id int(11) DEFAULT NULL,
                   ku_name varchar(30) DEFAULT NULL,
                   ku_ort varchar(30) DEFAULT NULL,
                   PRIMARY KEY ku_id (ku_id)
                   ) ENGINE=MyISAM";
            mysqli_query($con, $sql);
            
            $sql = "INSERT INTO kunde(ku_id, ku_name, ku_ort) VALUES
                   (1, 'Schmidt', 'Hamburg'),
                   (2, 'Weber', 'Frankfurt'),
                   (3, 'Murchel', 'Dortmund')";
            mysqli_query($con, $sql);
            
            $sql = "CREATE TABLE IF NOT EXISTS projekt (
                   pr_id int(11) DEFAULT NULL,
                   pr_ku_id int(11) DEFAULT NULL,
                   pr_bezeichnung varchar(50) DEFAULT NULL,
                   PRIMARY KEY pr_id (pr_id)
                   ) ENGINE=MyISAM";
            mysqli_query($con, $sql);
            
            $sql = "INSERT INTO projekt(pr_id, pr_ku_id, pr_bezeichnung) VALUES
                   (1, 1, 'Alexanderstrasse'),
                   (2, 1, 'Peterstrasse'),
                   (3, 2, 'Jahnplatz'),
                   (4, 2, 'Lindenplatz'),
                   (5, 3, 'Nordbahnhof'),
                   (6, 3, 'Westbahnhof')";
            mysqli_query($con, $sql);
            
            $sql = "CREATE TABLE IF NOT EXISTS person (
                   pe_id int(11) DEFAULT NULL,
                   pe_nachname varchar(30) DEFAULT NULL,
                   pe_vorname varchar(30) DEFAULT NULL,
                   PRIMARY KEY pe_id (pe_id)
                   ) ENGINE=MyISAM";
            mysqli_query($con, $sql);
            
            $sql = "INSERT INTO person(pe_id, pe_nachname, pe_vorname) VALUES
                   (1, 'Mohr', 'Hans'),
                   (2, 'Berger', 'Stefan'),
                   (3, 'Suhren', 'Marion')";
            mysqli_query($con, $sql);
            
            $sql = "CREATE TABLE IF NOT EXISTS projekt_person (
                   pr_id int(11) DEFAULT NULL,
                   pe_id int(11) DEFAULT NULL,
                   pp_datum date DEFAULT NULL,
                   pp_zeit double DEFAULT NULL,
                   PRIMARY KEY pp_id (pr_id, pe_id, pp_datum)
                   ) ENGINE=MyISAM";
            mysqli_query($con, $sql);
            
            $sql = "INSERT INTO projekt_person(pr_id, pe_id, pp_datum, pp_zeit) VALUES
                   (1, 1, '2015-12-01', 3.5),
                   (1, 3, '2015-12-01', 4),
                   (4, 1, '2015-12-01', 3),
                   (4, 2, '2015-12-01', 6.5),
                   (4, 2, '2015-12-02', 7.3),
                   (4, 3, '2015-12-01', 4)";
            mysqli_query($con, $sql);
            
            mysqli_close($con);

            Ich habe das Script angepasst und MyISAM durch innodb ersetzt und damit eine zweite Db erzeugt.

            Leider funktioniert das erzeugen des ForeignKey ebenfalls nicht, jedoch
            mit einer anderen Fehlermeldung: Fehlender Index über Spalten.

            Der PK Index existiert natürlich. Den FK Index müsste er doch selbst
            anlegen. Also habe ich den FK Index selbst angelegt.


            Jetzt konnte ich über den Designer die Relation erzeugen.


            Kann sich das einer erklären? Ich habe übrigens eine Standard
            Installation vom WampServer 3.2.0.

            Letztendlich die Frage: Kann es sein, dass FK nur mit innodb möglich sind?

            Schöne Grüße,

            Sophia

            Kommentar


            • #7
              Zitat von praktikant13 Beitrag anzeigen

              Letztendlich die Frage: Kann es sein, dass FK nur mit innodb möglich sind?

              Schöne Grüße,

              Sophia
              Ja. MyISAM ist längst vergammelter Dreck aus dem letzten Jahrtausend. InnoDB ist etwas besser, das stammt nur aus dem letzten Jahrundert.
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar


              • #8
                Zitat von praktikant13 Beitrag anzeigen
                Letztendlich die Frage: Kann es sein, dass FK nur mit innodb möglich sind?
                Ich würde es etwas anders ausdrücken als akretschmer , der ja bereits auf die Unvereinbarkeit von pädagischem Wert und mySQL hingewiesen hat:
                Ein Foreign Key ist so ein fundamentales Konstrukt in einer DB, dass es gehen muss! Ich würde mir sofort eine andere Datenbank suchen!
                Deine Frage könntest Du Dir natürlich auch mit einem klitzekleinen bisschen Suchen in der mySQL Doku selbst beantworten. Ich muss aber zugeben, dass auch ich keine Lust habe, diesem alten Kram hinterherzuhecheln. Weil, ja weil es einfach bessere Alternativen gibt, mit denen man problemlos den Sachverhalt lernen kann.

                Zum Thema "pädagogisch wertvoll":
                Viele Anfänger haben Situationen in der Softwareentwicklung, wo sie meinen, dass sie einen Bug in einer fremden Software gefunden haben. In der Regel ist das ein Irrtum, zu 99.99%. Oder anders gesagt, wenn es nicht funktioniert, hast Du etwas falsch gemacht.
                Jetzt kurz zu allgemeinen Regeln in der Softwarebranche: Ist ein dokumentiertes Verhalten ein Bug?
                In mySQL gibt es viele Probleme mit teilweise schon sehr lange dokumentierten Effekten und Besonderheiten. Diese führen aber immer wieder zu Problemen, besonders bei Anfängern. Es ist eigentlich alles bekannt. Also, wenn Du Dir selbst einen Gefallen tuen willst, nimm ein anderes Datenbanksystem zum Lernen. Dann musst Du Dich mit solchen Effekten wie oben nicht herumschlagen. Lerne das Prinzip statt die Macken einer Variante.

                Kommentar


                • #9
                  Vielen Dank für die ausführlichen Antworten, die ich mir auch gerne zu Herzen nehmen würde.
                  Aber, um eine ernstzunehmende Programmiersprache wie php ohne weitere Vorkenntnisse zu erlernen, habe ich den Weg über ein aktuelles Fachbuch gewählt.

                  Das oben beschriebene Buch php 5.7 und MySQL 5.6 ist ein Bestseller in der 11. Auflage, sowie es das Cover verspricht.
                  Ich bin leider auf einige Fehler in diesem Buch gestoßen, die so nicht funktioniert haben und wenn man es nicht besser weiß, hat man die Möglichkeit A abzubrechen, oder B sich durchzubeißen.
                  Ich habe mich für Letzteres entschieden.

                  Natürlich gibt es viele Datenbanken, die auch viel Geld kosten und ihren Preis auch wahrscheinlich wert sind.
                  Ich würde gerne eine Datenbank einsetzen, die eine große Verbreitung hat. Die MySQL-Datenbank wird von nahezu allen Webhostern unterstützt.
                  Umso mehr erstaunt es mich, dass sie nicht besonders gut sein soll.

                  Aus anderen Quellen habe ich den Hinweis bekommen, für den Datenbankzugriff PDO zu verwenden. Kommt in diesem Buch 2 Kapitel später auch vor.
                  Meine nächsten Recherchen zeigen in Richtung PostgreSQL und FirebirdSQL.
                  Für die FirebirdSQL gibt es auch einen PDO-Treiber, für PostgreSQL vermutlich auch.

                  Sicherlich ist es schwierig, eine Empfehlung für eine Datenbank auszusprechen. Ich weiß nur, dass FirebirdSQL eine sehr gute Datenbank ist, aber nicht so populär im Web.
                  Welche RDBMS-Datenbank würdet ihr empfehlen, die man auch nahezu problemlos beim Webhoster betreiben könnte?
                  Meine Lernziele sind nicht nur zum Spaß, sondern ich möchte das Zeug schon ernsthaft lernen und betreiben.

                  LG
                  Sophia

                  Kommentar


                  • #10
                    Meiner Meinung ist MySQL zum Einstieg nicht verkehrt. Es ist halt der quasi Standard in weiten Teilen der IT Welt. Ich finde deinen Weg das Buch durchzuarbeiten ist ein guter Weg, da dies bestimmt auch einer entsprechenden Lernkurve folgt. Wenn du dies Buch dann durch hast, kannst du ja auch mal über den Tellerrand schauen und verstehst dann auch eher warum andere Leute andere DBMS bevorzugen und was die Probleme bei MySQL sind im Vergleich. Am Ende sollte nicht die DB entscheiden wie etwas Programmiert wird, sondern die DB passend zum Problem gewählt werden.

                    Kommentar


                    • #11
                      Zitat von Zeichen32 Beitrag anzeigen
                      Meiner Meinung ist MySQL zum Einstieg nicht verkehrt.
                      Nö. Sieht man schon an diesem Thread.

                      Es ist halt der quasi Standard in weiten Teilen der IT Welt.
                      Nö, maximal trifft das auf Kleinkrams zu, nicht auf große Lösungen.
                      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                      Kommentar


                      • #12
                        Zitat von akretschmer Beitrag anzeigen
                        Nö, maximal trifft das auf Kleinkrams zu, nicht auf große Lösungen.
                        Die "großen" Lösungen sind sicher nicht Thema des TE. Wer mit phpMyAdmin arbeitet bewegt sich in einer Ebene für die selbst SQLite ausreicht. M.E. ist SQLite für einen Großteil der "Butter und Brot" Websites vollkommen ausreichend.

                        Ansonsten bin ich auch der Meinung - wozu MySQL wenn man PostgreSQL zum gleichen Preis erhält...

                        Kommentar


                        • #13
                          Du machst das richtig. Nicht aufgeben, wie Zeichen32 auch sagte. Arbeite das Buch weiter durch, an einigen Stellen hast Du der Datenbank dann vielleicht ne Extrarunde zu verdanken. Auch kein Beinbruch. Wenn es die Auseinandersetzung mit der Materie fördert, ist es ja vielleicht sogar irgendwie auch positiv.

                          Ich kann Dir den Hype bzw. die Verbreitung nicht erklären, es war sicher mal als offene Software weit vorne, aber dann kam Oracle. Und ich will Dich nicht enttäuschen wegen des Buches, aber php 5.7 und mysql 5.6 ist wirklich uralter Kram. Sogar mySQL hat deutlich neueres zu bieten. Ob man an der Stelle - beigelegte Software- von einem solchen Buch auch Aktualität erwarten darf, da fehlt mir die Erfahrung.*

                          Wie auch immer, unabhängig von der Buchsoftware kann man ja das eigene System mit wirklich aktuellen Versionen ausstatten oder eine VM nach Bedarf einrichten.

                          Firebird und PostgreSQL sind beide empfehlenswert. Tatsächlich aber als Webdb nicht so verbreitet.
                          SQLite ist auch einen Blick wert, weil es mittlerweile sehr gute Funktionsvielfalt anbietet. Für Anfänger allerdings auch erst mal nicht so entscheidend.
                          Die Logik "für Anfänger reicht auch mySQL" erschließt sich mir allerdings nicht.

                          Die Sache beginnt eigentlich bei so PHP Fragen interessant zu werden, wie sie hier im Forum viel auftauchen „wie kann ich in der While Schleife die Spalte xy ...“
                          Mit guten SQL Kenntnissen kann man sich viel PHP Code sparen oder kürzen.

                          * Manchmal ist es so, dass diese Bücher auch Codes bereithalten, die auf irgendeiner Webseite Aktualisierungen freischalten.

                          P.S.: Ich mache es eigentlich immer so, dass ich mir für das was ich brauche eine VM anlege und dort unter aktuellen Linux Distris die Software installiere, die ich brauche. Das klingt vielleicht dramatisch, sind aber meist nur ein paar Befehle in der Console.

                          Kommentar


                          • #14
                            Zitat von Zeichen32 Beitrag anzeigen
                            Meiner Meinung ist MySQL zum Einstieg nicht verkehrt.
                            Vielleicht mal als Beispiel, warum MySQL halt schlicht Murks ist:

                            Code:
                            mysql> create table demo (i int check (i < 10));
                            Query OK, 0 rows affected (0.07 sec)
                            
                            mysql> insert into demo (i) values (20);
                            Query OK, 1 row affected (0.02 sec)
                            
                            mysql> select * from demo;
                            +------+
                            | i    |
                            +------+
                            |   20 |
                            +------+
                            1 row in set (0.00 sec)
                            
                            --
                            --
                            --
                            test=*# create table demo (i int check (i < 10));
                            CREATE TABLE
                            test=*# insert into demo (i) values (20);
                            ERROR:  new row for relation "demo" violates check constraint "demo_i_check"
                            DETAIL:  Failing row contains (20).
                            test=*#
                            Du erkennst und verstehst den Unterschied? Du meinst, dieses Verhalten von MySQL ist gut für Anfänger?
                            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                            Kommentar


                            • #15
                              Mir brauchst du nicht erklären was Postgres gegenüber MySQL hervorhebt. Wenn ich die Wahl habe nutzte ich dieses ebenfalls lieber. Aber hierum geht es in diesem Thread gar nicht. Der TE hat ein Buch für PHP+MySQL und sollte dieses auch durcharbeiten. Wenn er dies durch hat kann er sich ja selbständig auch andere Datenbank Systeme anschauen und selber die Erfahrung machen.

                              Kommentar

                              Lädt...
                              X