Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Tabelle erweitern

Einklappen

Neue Werbung 2019

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

  • MySQL Tabelle erweitern

    Hallo,

    Ich bin dabei eine Joomla 1.5 Komponente mit einer zusätzlichen Abfrage zu erweitern.
    Wenn man diese Komponente neu installiert, dann wird die zusätzliche Abfrage in der Datenbank ordnungsgemäß erstellt.

    Mein Problem bezieht sich auf ein Upgrade. Sprich wenn die Komponente bereits installiert ist, soll die Zeile durch nochmaliges installieren/upgraden hinzugefügt werden.

    Ich dachte, dass es per INSERT INTO geht.

    Aber irgendwie kommer ich nicht weiter. Nun bräuchte ich eure Hilfe, um auf den richtigen Trichter zu kommen.

    Code:
    CREATE TABLE IF NOT EXISTS #__XXX_YYYYYY (
      id int(10) unsigned NOT NULL auto_increment,
      user_id int(10) unsigned NOT NULL default '0',
      firstname varchar(200) default NULL,
      lastname varchar(200) default NULL,
      company varchar(200) default NULL,
      zip varchar(10) default NULL,
      city varchar(200) default NULL,
      country varchar(200) default NULL,
      phone varchar(200) default NULL,
      fax varchar(200) default NULL,
      street varchar(200) default NULL,
      Beispiel varchar(50) NOT NULL, <--- Um diese Abfrage handelt es sich.
      `comment` text NOT NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM;
    Vielen dank für eure Hilfe.

    Grüße
    Krieger


  • #2
    So ganz werde ich aus deiner Problembeschreibung nicht schlau ...

    Willst du eine zusätzliche Spalte in die Struktur einer Tabelle einfügen?
    Das macht man natürlich nicht über INSERT INTO, denn das ist für Daten zuständig.

    Vermutlich suchst du ALTER TABLE?
    MySQL :: MySQL 5.1 Reference Manual :: 12.1.7 ALTER TABLE Syntax

    Kommentar


    • #3
      Zitat von ChrisB Beitrag anzeigen
      So ganz werde ich aus deiner Problembeschreibung nicht schlau ...

      Willst du eine zusätzliche Spalte in die Struktur einer Tabelle einfügen?
      Das macht man natürlich nicht über INSERT INTO, denn das ist für Daten zuständig.

      Vermutlich suchst du ALTER TABLE?
      MySQL :: MySQL 5.1 Reference Manual :: 12.1.7 ALTER TABLE Syntax
      Ja, sorry ALTER TABLE suche ich bzw. habe ich schon geschrieben gehabt.

      alter table #_xxx_yyyyy add Beispiel varchar(50);

      Diese Zeile war mein Gedanke. Aber das verursacht Fehler bei der Installation der Joomlakomponente.

      Nochmal zu Erklätung:

      Ich habe eine Komponente, wo ich eine weitere Abfrage für ein Formular hinzugeügt habe. Dies klappt auch, wenn die Installation frisch übers Backend installiert wird.

      Dann trägt der obige SQL-Befehl die Spalte(?) in die Tabelle ein.

      Wenn aber nun jemand die alte Komponente installiert hat und die neue Version drüber installiert, wird das Feld "Beispiel" nicht in die Tabelle eingetragen.

      Das liegt vermutlich an den Befehl CREATE TABLE IF NOT EXISTS.

      Ich möchte nun einen Weg finden, indem ich in die obige SQL Anweisung eine Befehlszeile einbaue, damit bei Drüberinstallation das Feld "Beispiel" in die Tabelle eingetragen wird.

      P.S.: Ich hoffe es ist nun etwasverständlicher geschrieben.

      Kommentar


      • #4
        Zitat von Krieger Beitrag anzeigen
        alter table #_xxx_yyyyy add Beispiel varchar(50);

        Diese Zeile war mein Gedanke. Aber das verursacht Fehler bei der Installation der Joomlakomponente.
        Und welchen?

        (Bitte gewöhne dir an, Fehlermeldungen immer konkret im Wortlaut zu zitieren - sonst kann man dir kaum weiterhelfen.)

        Das liegt vermutlich an den Befehl CREATE TABLE IF NOT EXISTS.
        Das soll ja nur die Tabelle erstellen, wenn sie noch gar nicht vorhanden ist - und wenn das Plugin vorher bereits installiert war, dann wird sie es aber sein.

        Ich möchte nun einen Weg finden, indem ich in die obige SQL Anweisung eine Befehlszeile einbaue, damit bei Drüberinstallation das Feld "Beispiel" in die Tabelle eingetragen wird.
        Das geht, wie gesagt, mit ALTER TABLE.

        Kommentar


        • #5
          Kleines Update.

          Die Fehlerquelle habe ich durch eine 2. SQL Datei und einen 2. Eintrag in die install.php finden bzw. lösen können.

          Vielen Dank für den Schubser. ALTER TABLE macht genau das, was es nun soll.

          Kommentar

          Lädt...
          X