PDF in Blob bei MariDB Speichern und Lesen

Polareslicht

Neuer Benutzer
Beiträge
3
Hallo Forum, ich möchte PDF Dateien in einem Blob-Feld in einer SQL MariaDB speichern und natürlich wieder lesen.
Ich habe versucht eine Lösung zu finden, doch leider war ich erfolglos.
Mir sind die Vor- und Nachteile Dateien in der DB zu speichern sehr wohl bewusst und nicht Gegenstand der Frage.
Meine Testumgebung schaut derzeit so aus

mari DB 11.3.2 Local <==> Heidi SQL12.6.0.6765
Statement:
Code:
INSERT INTO dateien (id_upload,rechte,auftrag,datei) VALUES (23,b'10',400505050,LOAD_FILE ('C:\test.pdf'))
 
Werbung:
doch leider war ich erfolglos
Wie lautet die Fehlermeldung? "Fehle bei load_file: erfolglos"?
Die Fehlermeldungen von mySQL sind nicht so irre gut, aber so schlecht sind sie nicht oder?
;-)

Für alle Deine nächsten EDV Fragen im Leben kannst Du Dir immer gleich die Fehlermeldung kopieren und den Text in Dein Post kopieren, natürlich zusammen mit dem erfolglosen Befehl, den Du ja auch gepostet hast.

Was ergibt
Code:
SELECT USER, FILE_PRIV FROM mysql.user;
SHOW VARIABLES LIKE 'max_allowed_packet';
SHOW VARIABLES LIKE 'secure_file_priv';
SELECT LOAD_FILE ('C:\test.pdf')

Der Befehl funktioniert nur auf dem Server. Der Benutzer bzw. Server muss OS seitig bereits Leserechte für die Datei und den Pfad dorthin haben.

P.S.: An den aufgeführten Punkten merkst Du vielleicht, dass die Funktion nicht unproblematisch ist. Es sind ein paar Sicherheitsfeatures vorgeschaltet, die vielleicht Sinn machen.
 
Hallo erst mal danke für deinen Antwort.
was deinen Frage nach einer Fehler Meldung angeht würde ich dir gern eine Posten wenn es eine gäbe doch das ist nicht der Fall
Code:
INSERT INTO dateien (id_upload,rechte,auftrag,datei) VALUES (23,b'10',400505050,LOAD_FILE ('C:\test.pdf'))
;
/* Betroffene Zeilen: 1  Gefundene Zeilen: 0  Warnungen: 0  Dauer von 1 Abfrage: 0,062 Sek. */

meine test PDF ist 587 KB groß
und wird leider nicht in der SB gespeicher.

Code:
SELECT USER, FILE_PRIV FROM mysql.user;
SHOW VARIABLES LIKE 'max_allowed_packet';
SHOW VARIABLES LIKE 'secure_file_priv';
SELECT LOAD_FILE ('C:\test.pdf')

;
/* Betroffene Zeilen: 0  Gefundene Zeilen: 9  Warnungen: 0  Dauer von 4 Abfragen: 0,000 Sek. */
die Ausgabe dazu:
User;File_priv
mariadb.sys;N
root;Y
root;Y
root;Y
root;Y
root;Y

Wenn ich was zur besseren Hilfe beitragen kann würde ich das gerne tun, leider reicht mein Wissen nicht, um meinen fehler selbst zusehen bzw. zu finden.
 
Das sieht nicht nach 9 Zeilen aus.

Wenn Du Dir die "Mühe" machst, die Befehle aus mysql oder maria db cli einen nach dem anderen aufzurufen, dann kannst Du alles problemlos in einem Rutsch kopieren und hier pasten.
Ja ich kann es auch Zählen und ich habe keinen Blassen warum er nur sieben aus Gibt.
Sorry das ich Frage aber ist Heidi nicht eine Clint anwendung auch frontend genannt? oder meinst du die Connsole direct an der DB?
Mit befehle einzelnt aufrufen meinst du jeden Spalten eintrag einzeln auf rufen und ein geben und sehen was Passiert?
Ich weiss nicht ob es dir klar ist aber mein statemennt macht was es soll außer die datei binär in den Blob zu schreiben alle anderen Spalten werden wie gewünscht geschrieben.
 
Werbung:
Ja, alles außer dem Server ist ein Client.
Console, ja das meine ich, direkt an der DB nicht unbedingt, die Console kann überall sein oder der Server, je nach Perspektive.

Das Problem in den Foren ist, dass es viele Wege nach Rom gibt. Damit alle über das Gleiche reden, gibt es verschiedene Praktiken, es sich gegenseitig möglichst leicht zu machen. Console ist eine davon.
Wenn Du Befehle in der Console eingibst, ist das:
- einfach copy/paste von Text
- ebenso wie alle Ausgaben, die darauf folgen, ob Daten oder Fehlermeldungen, alles Text
- die Ausgaben kannst du per copy/paste wieder hier posten (das geht mit Bildern auch)
- die geposteten Statements, Daten oder Fehlermeldungen kann jeder Helfer wieder per copy/paste weiter verwenden, um Dich zu unterstützen (das geht mit Bildern nicht)
- die Wahrscheinlichkeit, dass Helfer die gleiche DB haben wie Du ist so mittel, dass sie auch das gleiche Cli Tool haben, ist wesentlich unwahrscheinlicher
- das mitgelieferte Kommandozeilenprogramm haben alle, die auch mit dem Server arbeiten

Es gibt nichts einfacheres und sichereres als mit der Console zu arbeiten. Das machen auch Profis so. Wenn Du einen Supportvertrag bei Oracle hättest für Deine mysql DB (Du hast maria ), Du würdest einen Fehler melden und eine Antwort kaufen, dann würde es auch per Console laufen.

Ich habe verstanden, dass nur load_file nicht funktioniert. Das muss auch so sein, alles andere wäre schlimm. load_file ist eine Funktion, die im Fehlerfall offenbar ein NULL zurückliefert.
 
Zurück
Oben