Tom: MySQL Fehlermeldung

Hello,

Könnt Ihr mir bei der Deutung der Fehlermeldung helfen?

INSERT TABLE 'tablename' isn't allowed in FROM table list

Das Statement lautet:

$query = "insert into products (umbruch, name, bild, parentid, sort) ".
               "select '$um', '$d_name','$d_bild','$parentid', max(b.sort)+1 ".
               "from products b ".
               "where b.parentid = $parentid ".
               "group by b.parentid";

Das Statement ist nur kritisch beim Einfügen mehrerer Datensätze, was hier aber nicht geschieht.

Das hat letzte Woche auch noch einwandfrei funktioniert auf MySQL 4.0.12 Standard und auf MySQL 3.23.55-max und auf MySQL 4.018.log funktionmiert es auch heute noch einwandfrei.

Es muss sich also um Änderung von Rechten handeln, die ich nicht unter Kontrolle habe (macht der Provider).

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
  1. yo,

    versuch doch mal, ob du das select alleine ausführen kannst oder ob da schon eine fehlermeldung kommt sprich ohne insert.

    Ilja

    1. Hello,

      versuch doch mal, ob du das select alleine ausführen kannst oder ob da schon eine fehlermeldung kommt sprich ohne insert.

      Ein einfaches Select funktioniert.

      Dieses Statement habe ich letzte Woche auch auf demselben Server ausgeführt mit Hilfe von Testtabellen. Da hat es auch noch funktioniert.

      Und auf dem MySQL 4.0.18 log läuft es ja auch.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  2. hi,

    INSERT TABLE 'tablename' isn't allowed in FROM table list

    das dürfte sich m.E. auf den umstand beziehen, den ich letzte tage in unserer diskussion schon mal erwähnte,

    http://dev.mysql.com/doc/mysql/de/INSERT_SELECT.html:

    Die Ziel-Tabelle des INSERT-Statements darf nicht in der FROM-Klausel des SELECT-Teils der Anfrage erscheinen, weil es in ANSI-SQL verboten ist, aus derselben Tabelle auszuwählen (SELECT), in die eingefügt wird. (Das Problem liegt darin, dass das SELECT möglicherweise Datensätze finden würde, die früher während desselben Laufs eingefügt wurden. Wenn man Sub-Select-Klauseln verwendet, könnte die Situation schnell sehr verwirrend werden!)

    Das Statement ist nur kritisch beim Einfügen mehrerer Datensätze, was hier aber nicht geschieht.

    das weiß (my)SQL an diesem punkt aber vermutlich nicht, und deshalb kommt die fehlermeldung, um oben erwähntes problem definitiv ausschließen zu können.

    Das hat letzte Woche auch noch einwandfrei funktioniert auf MySQL 4.0.12 Standard und auf MySQL 3.23.55-max und auf MySQL 4.018.log funktionmiert es auch heute noch einwandfrei.
    Es muss sich also um Änderung von Rechten handeln, die ich nicht unter Kontrolle habe (macht der Provider).

    "rechte" wohl weniger - gibt es eventuell einen "ANSI-SQL-kompatibilitätsmodus", der jetzt aktiviert wurde?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hello,

      INSERT TABLE 'tablename' isn't allowed in FROM table list

      das dürfte sich m.E. auf den umstand beziehen, den ich letzte tage in unserer diskussion schon mal erwähnte,

      Ich habe es so gelassen, nachdem ich noch etwas recherchert hatte und an mehreren Stellen gefunden habe, dass es bei einem Datensatz unkritisch ist. Und MySQL ist ja auch nicht ANSI-SQL.

      Alternativ kann man eben mehrere Statements daraus machen und diese durch ein Lock binden.
      Was mich eben wundert, dass es auf der Version 4.0.18. einwandfrei funktioniert.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau