Kalle_B: Abfrage, ob Tabelle existiert

Hallöle,

wie kann man unter MySQL abfragen, ob eine Tabelle existiert?

Ich möchte sie anlegen, wenn ein Programm zum ersten mal aufgerufen wird.

Lieben Gruß, Kalle

  1. hi,

    wie kann man unter MySQL abfragen, ob eine Tabelle existiert?

    Ich möchte sie anlegen, wenn ein Programm zum ersten mal aufgerufen wird.

    http://dev.mysql.com/doc/refman/4.1/en/show-tables.html

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. wie kann man unter MySQL abfragen, ob eine Tabelle existiert?

      Ich möchte sie anlegen, wenn ein Programm zum ersten mal aufgerufen wird.

      http://dev.mysql.com/doc/refman/4.1/en/show-tables.html

      vielleicht in diesem Fall eher CREATE TABLE IF NOT EXISTS ... <http://dev.mysql.com/doc/refman/4.1/en/create-table.html>?

      Beide Methoden stellen aber nicht sicher, dass die Tabelle, sofern schon vorhanden, auch die gewünschte Struktur hat. Dafür gibt es http://dev.mysql.com/doc/refman/4.1/en/show-columns.html.

      1. hi,

        vielleicht in diesem Fall eher CREATE TABLE IF NOT EXISTS ... <http://dev.mysql.com/doc/refman/4.1/en/create-table.html>?

        Auch 'ne Möglichkeit - aber in beiden Fällen erst mal ein zusätzliches Statement - will man das jedes Mal abfeuern?

        Da würde ich doch wirklich lieber voraussetzen, dass die Tabelle existiert (mit entsprechender Fehlerbehandlung) - und das initiale Erstellen einem Setup-Script überlassen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. echo $begrüßung;

          CREATE TABLE IF NOT EXISTS ...
          Auch 'ne Möglichkeit - aber in beiden Fällen erst mal ein zusätzliches Statement - will man das jedes Mal abfeuern?

          Definiere "jedes Mal". Der Frage konnte man den geplanten Anwendungsfall nicht entnehmen.

          Da würde ich doch wirklich lieber voraussetzen, dass die Tabelle existiert (mit entsprechender Fehlerbehandlung) - und das initiale Erstellen einem Setup-Script überlassen.

          Im Allgemeinen sind CREATE-TABLE-Statements in Setup-Scripten zu finden. Wäre es verwegen, dies als Anwendungsfall anzunehmen?

          Soweit ich las (ich las nicht alles, das CREATE-TABLE-Kapitel ist doch recht umfangreich) verhindert IF NOT EXISTS nur die Ausgabe einer Fehlermeldung. Auf diese könnte man aber schön reagieren, wenn die Tabelle bereits existiert. Ob CREATE TABLE etwas auswertbares für affected_rows() liefert, wage ich zu bezweifeln. Andere Funktionen, die über den (Miss-)Erfolg eines Statements jenseits von SELECT, UPDATE, INSERT und DELETE Auskunft geben fallen mir grad nicht ein.

          echo "$verabschiedung $name";

          1. hi,

            Definiere "jedes Mal". Der Frage konnte man den geplanten Anwendungsfall nicht entnehmen.

            Hast recht.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    Ich möchte sie anlegen, wenn ein Programm zum ersten mal aufgerufen wird.

    dies ist entweder die Aufgabe eines Setup-Programms, oder/und eine ganz klare Ausnahme im Programmfluss. Und was heißt "Ausnahme" auf Englisch? Richtig, "exception". Also schmeiße und behandle während der Verwendung eine Exception.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Also schmeiße und behandle während der Verwendung eine Exception.

      Da klingelt doch was aus uralten ORACLE-Zeiten (1998). Habe ich sofort nachgelesen, ist also neu seit PHP5.

      Aber auch:
      "Da PHP anders als Java Exceptions nicht verpflichtend verwendet, reicht in vielen Fällen eine if- Abfrage zur Fehlerbehandlung aus."

      aus "PHP5 und MYSQL5, Addison-Wesley, 2006, S.106"

      Ich hab's jetzt mit
      CREATE TABLE IF NOT EXISTS ".$db[0]['objekte']." (
      ...
      )

      gelöst. Danke für den Hinweis, kann ich vielleicht noch gebrauchen.

      Kalle

      1. Hi,

        aus "PHP5 und MYSQL5, Addison-Wesley, 2006, S.106"

        ich würde einem Buch von Addison-Wesley nicht weiter trauen, als ich es auswerfen kann.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          ich würde einem Buch von Addison-Wesley nicht weiter trauen, als ich es auswerfen kann.

          Warum nicht?

          Viele Grüße,

          Stefan

          1. Hi,

            ich würde einem Buch von Addison-Wesley nicht weiter trauen, als ich es auswerfen kann.
            Warum nicht?

            weil diejenigen Addison-Wesley-Bücher, die ich bis jetzt (an-)gelesen habe, allesamt fachlich mehr als zweifelhaft waren. Sie machen auf mich den Eindruck des Mottos "Hauptsache, wir haben zu dem Thema auch was auf dem Markt".

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes