Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum ändert MySQL meine Codeansicht?

Was Sie sehen, sind Probleme, die sich daraus ergeben, dass SQL kompiliert und dann dekompiliert wird.

human readable SQL -> compiled form -> human readable SQL

Keine Sorge, es ist alles äquivalenter Code. Wenn Sie ein Beispiel möchten, schreiben Sie etwas JSON von Hand, führen Sie es durch einen JSON-Parser und wandeln Sie diese Daten dann wieder in JSON um. Es sieht nicht so aus wie das Original.

Dies ist ein allgemeines Problem beim Konvertieren von Daten, das als "Roundtripping" bekannt ist. Ohne zusätzliche Arbeit gehen nicht-semantische Informationen wie Kommentare, Einrückungen und Klammern (oder deren Fehlen) verloren. MySQL kann auch Optimierungen und semantische Transformationen anwenden, wie z. B. das Umwandeln Ihres FROM/WHERE in einen JOIN. Es erzeugt auch impliziten Code und Standardwerte (wie ALGORITHM = UNDEFINED ) explizit.

Wenn Sie das Ergebnis eines Roundtrips sehen, können Sie subtile Fehler in Ihrem Code erkennen, insbesondere in Bezug auf die Reihenfolge der Vorgänge. Ein Decompiler kann manchmal gebeten werden, zusätzliche Klammern hinzuzufügen, um die Reihenfolge deutlich zu machen.

Es hat keinen Sinn, dass MySQL Ihre ursprünglichen CREATEs für Tabellen und Ansichten speichert, sie werden nutzlos, wenn ALTER verwendet wird. Es kann jedoch möglich sein, Ihre Anfragen so zurückzugeben, wie sie ursprünglich geschrieben wurden.