The user specified as a definer

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

  • The user specified as a definer

    Hallo,

    ich habe folgendes Problem. Ich schreibe gerade an einem kleinen Script, was mir eine Datenbanksicherung mittels PHP erledigt.

    Das funktioniert auch soweit, aber bei bestimmten Datenbanken kommt folgender Fehler:

    The user specified as a definer ('xxxxxx'@'%') does not exist

    Ich arbeite hier auf einer lokalen Entwicklungsumgebung. Der genannte User existiert online in der Datenbank, aber eben nicht lokal.

    Ist es überhaupt möglich die Tabelle dann zu sichern? Bzw. gibts da einen bestimmten Trick, das ganze zu umgehen.

    So wie ich mich belesen habe, ist wohl die Tabelle (mittels information_schema -> views) an diesen User geknüpft!?

    Bedeutet das, das kein anderer User (auch nicht root) auf diese Tabelle zugreifen kann?

    Vielen Dank für eure Hilfe.

    Beste Grüße
    Michael

  • #2
    Hallo,

    wenn es um Views, Triggers oder Stored Procedures geht, bist du gut beraten, die DEFINER-Klausel einfach wegzulassen. Ansonsten lass uns bitte wissen, was genau du gemacht hast. Ich vermute zwar, es geht um ein SHOW CREATE Statement, aber du kannst es ja noch etwas genauer beleuchten.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Ich leuchte:

      Also, das letzte Statement vor dem Fehler ist eine ganz normale "SELECT" Anweisung:

      Code:
      select
      	`sXOP_Id`,
      	`sXOP_XtcOrdersId`,
      	`products_name`,
      	`products_price`,
      	`products_discount_made`,
      	`final_price`,
      	`products_tax`,
      	`products_quantity`,
      	`sXCPC_Id`,
      	`sXCPC_XtcProductsOptionsValueId`,
      	`sXCPC_ProductsId`,
      	`sXCPC_Size`,
      	`sXCPC_Color`,
      	`sXCPC_Form`,
      	`sXCPC_Quantity`
      from vXtcCOrderPos;
      
      -- 1449 - The user specified as a definer ('xxxxxx'@'%') does not exist
      Genau das macht es ja so schwer für mich zu verstehen. Ich frage lediglich die Tabelle ab und möchte das Ergebnis verarbeiten; leider bekomme ich halt nur Mecker.

      Danke für eure Hilfe.

      Grüße
      Michael
      Zuletzt geändert von AmicaNoctis; 17.11.2011, 12:34. Grund: Code umgebrochen

      Kommentar


      • #4
        Bitte künftig Code umbrechen, sonst findet man die Buttons nicht mehr und muss ewig weit nach rechts scrollen!

        Was sagt denn PHPMyAdmin, wenn du dieses Statement ausführst? Ich kann mir nicht vorstellen, dass dieser Fehler bei einem SELECT-Statement auftreten soll. Bist du innerhalb einer Transaktion? Werden davor oder danach noch andere Statements ausgeführt?

        Edit: Ist vXtcCOrderPos eine Base Table oder ein View?
        Zuletzt geändert von AmicaNoctis; 17.11.2011, 12:41.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Hallo,

          sorry, ich dachte der Code wird automatisch umgebrochen wenn man den Code-Block nutzt.

          Also, PHPmyAdmin sagt das gleiche, das der User nicht existiert.

          Und laut PHPmyAdmin ist es ein VIEW, aber auch das müsste ich doch per SELECT abfragen können!?

          Grüße
          Michael

          Kommentar


          • #6
            Nein, der Code wird nicht automatisch umgebrochen.

            Okay, dann gilt meine erste Antwort. Du hast das View erzeugt und dabei die originale DEFINER-Klausel drin gelassen. Also ist das View auf den originalen Benutzer festgenagelt und kann nicht abgefragt werden, solange dieser nicht existiert.

            Lösung (nochmal): Entferne die DEFINER-Klauseln!
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Danke, aber da ich in MySQL nur Grundkenntnisse habe, noch eine Frage zur Lösung.

              Gehe ich richtig in der Annahme, dass die Definier Klauseln beim anlegen der Tabelle gemeint sind!?

              Grüße
              Michael

              Kommentar


              • #8
                Genau, aber beim Anlegen des Views oder eventueller Trigger. Bei normalen Tabellen gibt es so etwas nicht.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Auch wenn das hier vielleicht nicht richtig ist, habe ich noch eine Frage. Wie kann ich abfragen ob die "VIEW" abfragbar für den aktuellen User ist, so das das Script nicht abbricht. (PHP)

                  Danke und Grüße
                  Michael

                  Kommentar


                  • #10
                    PHP-Scripte brechen nicht ab, wenn Datenbankabfragen schief gehen.
                    Baue eine sinnvolle Fehlerbehandlung ins Script ein.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X