Hallo allesamt,
Ich habe eine MySQL Datenbank in der öffentliche PGP-Keys im Binärformat als BLOB gespeichert werden. Normalerweise übernehmen Scripte die Bearbeitung der DB. Da nun aber ein kleiner Fehler unterlaufen ist (_duck_), muss ich händisch ran:
UPDATE table SET blob_var='(Binärdaten)' WHERE id=1;
Wie bekomme ich aber die Daten aus /foo/file.pgp in blob_var und somit in die DB? Vorschläge?
Merci, Christian
Am Fri den 21 Sep 2001 um 12:03:56PM +0200 schrieb Christian Wippermann:
Hallo allesamt,
Ich habe eine MySQL Datenbank in der öffentliche PGP-Keys im Binärformat als BLOB gespeichert werden. Normalerweise übernehmen Scripte die Bearbeitung der DB. Da nun aber ein kleiner Fehler unterlaufen ist (_duck_), muss ich händisch ran:
UPDATE table SET blob_var='(Binärdaten)' WHERE id=1;
Wie bekomme ich aber die Daten aus /foo/file.pgp in blob_var und somit in die DB? Vorschläge?
Du kannst MySQL auch von der shell aus benutzen. Das eigentliche Problem ist natürlich wie du die binären Daten vor der shell schützen kannst.
Folgendes geht z.B. schon mal nicht: my_pgp=`cat my_file` mysql -u ich -pgeheim -e "UPDATE table SET blob_var='$my_pgp' WHERE id=1"
Bei Tests war die md5sum von my_file anders wenn ich dann folgendes getan habe: echo $my_pgp | md5sum md5sum my_file
Vielleicht können die shell Experten weiterhelfen. Einfacher ist IMHO ein kleines php oder perl Skript zu schreiben, welches die quote Funktion des mysql Modules nutzt, um den Kram sauber zu schreiben.
andre
Andre Schulze schrieb:
Christian Wippermann schrieb:
UPDATE table SET blob_var='(Binärdaten)' WHERE id=1;
Du kannst MySQL auch von der shell aus benutzen.
Das ist genau das, was ich will.
Das eigentliche Problem ist natürlich wie du die binären Daten vor der shell schützen kannst.
Was soll ich da schützen?
Folgendes geht z.B. schon mal nicht: my_pgp=`cat my_file` mysql -u ich -pgeheim -e "UPDATE table SET blob_var='$my_pgp' WHERE id=1"
Das funktioniert bei der ASCII version (file.asc) schon mal prima (ohne \ und mit Angabe der zu bearbeitenden DB). Halt .... doch nicht. Es gehen alle Zeilenumbrüche verloren. Der gesamte Key steht in einer Zeile und wird von pgp/gpg nicht verstanden.
Bei den Binärdaten müsste ich noch eine Art addslashes() ala PHP durchführen, damit mysql die Daten nimmt.
my_pgp=`cat my_file|addslashes` funzt bei mir irgendwie nich ;-)
Bei Tests war die md5sum von my_file anders wenn ich dann folgendes getan habe: echo $my_pgp | md5sum md5sum my_file
Hmmm ... ???? my_pgp=`cat my_file` && echo $my_pgp > new.pgp pgp -ka new.pgp -> funktioniert leider auch nicht.
Vielleicht können die shell Experten weiterhelfen.
Bitte!
Einfacher ist IMHO ein kleines php oder perl Skript zu schreiben, welches die quote Funktion des mysql Modules nutzt, um den Kram sauber zu schreiben.
Ich würde hier gern ohne scripte auskommen, um zu wissen wie es auch so funktioniert. Damit kann ich Probleme in Zukunft schneller lösen.
Christian
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Friday 21 September 2001 12:03, Christian Wippermann wrote:
Ich habe eine MySQL Datenbank in der öffentliche PGP-Keys im Binärformat als BLOB gespeichert werden. Normalerweise übernehmen Scripte die Bearbeitung der DB. Da nun aber ein kleiner Fehler unterlaufen ist (_duck_), muss ich händisch ran:
UPDATE table SET blob_var='(Binärdaten)' WHERE id=1;
Wie bekomme ich aber die Daten aus /foo/file.pgp in blob_var und somit in die DB? Vorschläge?
RTFM!!!!!!!!!! (und noch 2167 weitere !)
um es Dir nicht ganz so schwer zu machen:
- ---------- 7.4.10 String Functions
[...]
mysql> UPDATE table_name SET blob_column=LOAD_FILE("/tmp/picture") WHERE id=1; - ----------
wenn Du Debian hast setz Dich an die Kiste und stöbere in /usr/share/doc/mysql-doc . Bei SuSE/RH/whatever sollte die Doku in einem ähnlichen Verzeichnis zu finden sein. Die MySQL-Doku gehört zu den besten, die ich bisher gesehen habe.
Konrad
- -- BOFH excuse #28:
CPU radiator broken
lug-dd@mailman.schlittermann.de