AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

Ein Thema von bnreimer42 · begonnen am 27. Apr 2021 · letzter Beitrag vom 14. Mai 2021
Antwort Antwort
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
129 Beiträge
 
Delphi 12 Athens
 
#1

Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

  Alt 27. Apr 2021, 18:39
Datenbank: PostgreSQL • Version: 12 • Zugriff über: FireDac
Hallo,

ich scheitere gerade beim Versuch, auf ein bytea-Attrbut per FDQuery schreibend zuzugreifen und erhalte als Meldung:

[FireDAC][Phys][PG]-352. Objektwert für Parameter [DOCBIN] mit dem Typ [ftBlob] wird nicht unterstützt

Im Prinzip habe ich das Beispiel von http://docwiki.embarcadero.com/RADSt...ing_in_FireDAC mit angepasster Datenstruktur probiert.

Meine Tabelle:

Code:
CREATE TABLE stamm.dokument (
   "Id" serial NOT NULL,
[...]
   docbin bytea NULL, -- Dokument als Binär-Datei
[...]
   CONSTRAINT "PK_dbversion" PRIMARY KEY ("Id"),
[...]
);

Mein Delphi Beispiel:

Delphi-Quellcode:
 QWrite.SQL.Text := 'INSERT INTO stamm.dokument ' +
  '("Id", docbin) VALUES(1, :DOCBIN);';
  
  QWrite.Params[0].DataType := ftBlob;
  QWrite.Params[0].AsStream := TFileStream.Create('z:\O\test\test.pdf', fmOpenRead);

  try
    QWrite.ExecSQL;
  except
    on E:Exception DO
      DMLog.LogError('BlobTest',E);
  end;
Die Exception gibt mir den oben genannten Fehler.

Postgres-Server ist Version 12....
Delphi ist aktuellstes 10.4. Update 2

Mit Veränderung der FireDac-Parameter
OidAsBlob=yes
und
UnknownFormat=BYTEA
habe keinen Erfolg.




Hat jemand eine Idee?
Björn Reimer

Geändert von bnreimer42 (27. Apr 2021 um 21:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

  Alt 27. Apr 2021, 19:56
Funktioniert es mit DataType := ftStream ?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
129 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

  Alt 27. Apr 2021, 20:42
Leider nein, neue Fehlermeldung

Code:
[FireDAC][Phys][PG][libpq] ERROR: column "docbin" is of type bytea but expression is of type oid.
You will need to rewrite or cast the expression
... aber das könnte ein Ansatz sein ...
Björn Reimer

Geändert von bnreimer42 (27. Apr 2021 um 21:49 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.780 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

  Alt 28. Apr 2021, 06:40
.. vielleicht zeigt das eine mögliche Lösung.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
129 Beiträge
 
Delphi 12 Athens
 
#5

AW: Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

  Alt 28. Apr 2021, 07:31
.. vielleicht zeigt das eine mögliche Lösung.

Grüße
Klaus
Danke!

Ich suche nach einer Lösung, bei der die Dateien am Client liegen und vermute eine Wissenslücke bei FireDac. Mit dem obenen genannten Ansatz kann man Dateien verarbeiten, die bereits am Server liegen, auf dem PostgreSQL läuft.
Björn Reimer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mit FireDac auf bytea Attribut unter PostgreSQL schreiben

  Alt 28. Apr 2021, 07:52
Blobs mit FireDAC hatte ich noch nicht probiert, aber ja, die einfachen Dinge laufen gut damit.

Für den Zugriff auf Postgres nutzen wir PgDAC, was natürlich super funktioniert, vor allen die Blobs machen keine Probleme,
also die BLOB-Felder in den Tabellen. Nur Umgang mit den alten LargeObjects (LO) würde ich als bissl "umständlich" beschreiben, aber die kann man auch via SQL in ein BlobField konvertieren/joinen (Lesezugriff).
(nur bei sowas wie Array-Parametern bin ich gescheitert)

Und mit diesem LocalSQL vom FireDAC hatten wir auch schon erfolgreiche kleine Versuche, um damit auf die Query des PgDAC zuzugreifen.


Und Zugriff über DataSnap machte Probleme, bei MemoFeldern und ganz besonders bei VARCHAR ohne Längenangabe, da die DB da 64K nahm, aber PgDAC 8K für den RecordSpeicher
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Apr 2021 um 08:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz