[MySQL] Alter Table - Add Index

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

  • [MySQL] Alter Table - Add Index

    Kurze Frage zu einem problem...

    Ich habe eine Software in PHP, die bestimmte SQL abfragen sowohl beim Setup, als auch bei einem Update durchführt...

    worum es geht:
    alter tabel add index ...

    ausgangslage:
    system ist installiert und die tabelle 't1' hat die felder 'tf1' und 'tf2' (typ ist irrelevant)
    auf 'tf1' liegt ein index 'index_tf1'.

    Das ist die Ausgangslage nach einer installation.

    mache ich jetzt ein upgrade
    legt mir das setup einen weiteren index ('index_tf1_2') an, bringt aber gleichzeitig im errorlog (fehler werden geloggt) eine Hinweis auf 'duplicate index'...

    so, jetzt die Frage...
    wieso bringt mysql eine Fehlermeldung und fügt den neuen Index (der eigentlich nicht angelegt werden sollte) trotzdem ein ? Kann man das irgendwie abstellen ?

    Wenn möglich wollte ich einen Workaround ala "index einfach löschen und neu anlegen" vermeiden.

    gruss

  • #2
    spontan ohne einen plan zu haben....

    ALTER TABLE ADD INDEX IF NOT EXISTS .....


    ?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      mh... scheint nicht zu gehen, oder ich seh den wald vor lauter bäumen nicht...

      wie soll das deiner meinung nach gehen?

      tabelle: indextest
      indexname: this

      sql-statement: ALTER TABLE indextest ADD INDEX (this)

      Kommentar


      • #4
        Original geschrieben von MoRtAlAn
        mh... scheint nicht zu gehen, [...]
        das habe ich befürchtet. war ja auch nur spontan .... (und ohne plan)

        aber teste das mal so, wenn noch nicht passiert.

        ALTER TABLE indextest ADD INDEX IF NOT EXISTS (this)

        wieder ohne garantie. ich denke auch nciht, dass es klappen wird... habe mir auch nicht den syntax von ALTER angesehen...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          nope...
          mh... und index vorher löschen is auch nich das ware...

          Code:
          Error
          
          SQL-query : 
          
          ALTER TABLE indextest ADD INDEX IF NOT EXISTS (
          this
          )
          
          MySQL said:
          
          #1064 - You have an error in your SQL syntax near 'IF  NOT  EXISTS ( this )' at line 1
          ok, dann halt nochmal in ruhe überlegen!

          Kommentar


          • #6
            das habe ich mir gedacht...

            andere idee ...


            Code:
            SHOW KEYS FROM indextest
            daten checken und ggfls den ALTER machen.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              kam mir auch in den Sinn

              funktioniert auch

              gruss

              Kommentar


              • #8
                Original geschrieben von MoRtAlAn
                funktioniert auch
                dann hast du ja jetzt deine lösung..
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X