AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken client encoding mismatch PostgreSQL 9.3
Thema durchsuchen
Ansicht
Themen-Optionen

client encoding mismatch PostgreSQL 9.3

Ein Thema von luisk · begonnen am 31. Okt 2014 · letzter Beitrag vom 31. Okt 2014
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 17:04
Auf die Gefahr hin, dass das klar ist und da Du Dich irgendwie wiederholst.
Das verlinkte Tool ist kein Postgres Client.
Macht aber nix, geht wunderbar mit dem PostgreSQL-Server 9.3.5 auch die Verbindung mit dem ConnectionString geht (mit einer kleinen Änderung):
Code:
Provider=MSDASQL.1;
Persist Security Info=False;
Driver={PostgreSQL ANSI};
DATABASE=postgres;
SERVER=127.0.0.1;
UID=postgres;
PASSWORD=xxxxxx;
PORT=5432;
USER=postgres;
OPTION=3;
STMT=;
oder
Code:
Provider=MSDASQL.1;
Persist Security Info=False;
Driver={PostgreSQL UNICODE};
DATABASE=postgres;
SERVER=127.0.0.1;
UID=postgres;
PASSWORD=xxxxxx;
PORT=5432;
USER=postgres;
OPTION=3;
STMT=;
Das PASSWORD muss natürlich auch den Gegebenheiten angepasst werden (sollte aber klar sein)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#22

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 17:10
nein, das ist kein Prostgres-Client, sondern ein SQL-Editor (MS Visual Studio), der auch über QDBC auf PostgreSQL zugreifen kann ( wie auch auf andere Datenbanken)
Ja, mir ist das klar.

Was ist denn mit Deinem Postgres Client. Und wieso testest Du eine 64 bit Version und eine 32 bit Version? Kennst Du die Version Deines Postgres Client? Hast 32- und 64bit installiert?
Und welche brauchst Du davon?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#23

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 17:14
"Das PassWort muss natürlich auch den Gegebenheiten angepasst werden (sollte aber klar sein) "
oben hab ich schon geschrieben, dass bei falschem Passwort eine entsprechende Fehlermeldung kommt.


zum Postgre-Cient:
der Client ist die Delphi ADO-Komponente, die über ODBC zugreift.
Ich brauche die 32Bit-Version. Habe aber auch mal mit 64 Bit über eine DSN getestet, und die läuft.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#24

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 17:23
Also was ist mit dem 32er Client?
Du kennst die Unterschiede im Aufruf von ODBC Manager und UDL je nach Bitness?
Du kennst vielleicht sogar die installierte 32 bit Postgres Client Version, hast es vielleicht sogar selbst installiert? Ist es eine aktuelle Version?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 17:32
"Das PassWort muss natürlich auch den Gegebenheiten angepasst werden (sollte aber klar sein) "
oben hab ich schon geschrieben, dass bei falschem Passwort eine entsprechende Fehlermeldung kommt.


zum Postgre-Cient:
der Client ist die Delphi ADO-Komponente, die über ODBC zugreift.
Ich brauche die 32Bit-Version. Habe aber auch mal mit 64 Bit über eine DSN getestet, und die läuft.
Ok, dann muss ich wohl deutlicher werden:

Du hast einen veralteten ODBC-Treiber! Wenn der aktuell ist, dann muss bei DRIVER "PostgreSQL ANSI" oder "PostgreSQL UNICODE" stehen. Steht das nicht da sondern nur "PostgreSQL" und die Verbindung klappt bis zu der ominösen Fehlermeldung, dann sprichst du den alten, falschen ODBC-Treiber an.

Jetzt verstanden?

PS: Über die Systemsteuerung/Verwaltung/ODBC kann man sich sogar die installierten Treiber und Versionen anschauen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (31. Okt 2014 um 17:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#26

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 18:34
"PostgreSQL ANSI" bzw. "PostgreSQL UNICODE"
laufen zwar als DSN wenn ich diese in der Verwaltung->ODBC-Datenquelle projektiere,
diese DSN kann ich sogar in Delphi verwenden und sie connected:
Delphi-Quellcode:
DSN=PostgreSQL35W;DATABASE=postgres;SERVER=127.0.0.1;PORT=5432;UID=postgres;PWD=xxxx;SSLmode=disable;
ReadOnly=0;Protocol=7.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0;ConnSettings=;
Fetch=100;Socket=4096;UnknownSizes=0;MaxVarcharSize=255;MaxLongVarcharSize=8190;Debug=0;CommLog=0;
Optimizer=0;Ksqo=1;UseDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVarchar=0;BoolsAsChar=1;Parse=0;
CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;;LFConversion=1;UpdatableCursors=1;DisallowPremature=0;
TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=0;UseServerSidePrepare=1;LowerCaseIdentifier=0;GssAuthUseGSS=0;
XaOpt=1
aber der freie String mit "PostgreSQL UNICODE" läuft nicht:
Delphi-Quellcode:
'Provider=MSDASQL.1;'
 +'Persist Security Info=False;'
 +'Driver={PostgreSQL UNICODE};'
 +'DATABASE=postgres;'
 +'SERVER=127.0.0.1;'
 +'UID=postgres;'
 +'PASSWORD=xxxx;'
 +'PORT=5432;'
 +'USER=postgres;'
 +'OPTION=3;'
 +'STMT=;';
Da bekomme ich allerdings nun diese Meldung:
"der Datenquellenname wurde nicht gefunden und es wurde kein Standardtreiber angegeben"

Mit dem alten Treiber bin ich im Prinzip weiter gekommen. Das Passwort wird akzeptiert. Daher hab ich
zunächst damit weitergetestet.

mit der MySQL-Variante läuft die Chose einwandfrei.

Geändert von luisk (31. Okt 2014 um 18:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#27

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 19:02
Also ich teste mit diesem hochkomplexen Programm
Delphi-Quellcode:
unit Form.Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.StdCtrls;

type
  TForm1 = class( TForm )
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    ADOConnection1: TADOConnection;
    procedure Button1Click( Sender: TObject );
    procedure Button2Click( Sender: TObject );
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click( Sender: TObject );
begin
  Memo1.Text := PromptDataSource( Self.Handle, Memo1.Text );
end;

procedure TForm1.Button2Click( Sender: TObject );
begin
  ADOConnection1.ConnectionString := Memo1.Text;
  ADOConnection1.Open;
  try
  finally
    ADOConnection1.Close;
  end;
  ShowMessage( 'Connection successful' );
end;

end.
ob da eine Verbindung Zustandekommen oder nicht (EXE im Anhang)

Einfach den ConnectionString in das Memo klatschen, das Passwort abändern und auf Connect -> wunderbar
Interessant ist es diesen ConnectionString einmal durch den Verbindung-Editor zu jagen und schauen, was ohne wirkliche Änderung (nur Speichern des Kennworts angeklickt) dabei rauskommt:

Vorher:
Code:
Provider=MSDASQL.1;
Persist Security Info=False;
Driver={PostgreSQL ANSI};
DATABASE=postgres;
SERVER=127.0.0.1;
UID=postgres;
PASSWORD=******;
PORT=5432;
USER=postgres;
OPTION=3;
STMT=;
Nachher:
Code:
Provider=MSDASQL.1;
Password=******;
Persist Security Info=True;
Extended Properties="Driver={PostgreSQL ANSI};DATABASE=postgres;SERVER=127.0.0.1;UID=postgres;PORT=5432;USER=postgres;OPTION=3;STMT="
Anyway, bei beiden klappt die Verbindung ganz vorzüglich (du kannst es selber testen).

Ach ja: Meine installierte postgreSQL ODBC Version lautet: 9.03.04.00 (die aktuelleste die ich gefunden habe)
Angehängte Dateien
Dateityp: zip ADOConnectionStringBuilder.exe.zip (1,05 MB, 0x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#28

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 19:03
so geht der Mist nun:
Delphi-Quellcode:
'Provider=MSDASQL.1;'
  +'Persist Security Info=False;'
  +'Driver={PostgreSQL ODBC Driver(UNICODE)};'  // statt 'Driver={PostgreSQL UNICODE};'
  +'DATABASE=postgres;'
  +'SERVER=127.0.0.1;'
  +'UID=postgres;'
  +'PASSWORD=xxxx;'
  +'PORT=5432;'
  +'USER=postgres;'
  +'OPTION=3;'
  +'STMT=;';
Ich hab nun den String verwendet, den der ODBC-Konfigurator in der Verwaltung anbietet.

und was meinst Du nun dazu Sir Rufo ?

Ich sag nur "Macrodoof"

Ich hab die Treiber nun seit 10 Jahren aus der ODBC-INI herausgelesen und in einem Menu angeboten.
Und nun spielt MS hier anscheinend ein neues Spiel.
Jetzt muss ich mal schauen, was die geändert haben.

Geändert von luisk (31. Okt 2014 um 19:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#29

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 19:06
Dann verrate doch mal DEINE Version des ODBC-Treibers?

Da schaut man nach, wenn man wissen will wie der Treiber-Name lautet
odbc.png
und erfreulicherweise steht auch die Versionsnummer dabei
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (31. Okt 2014 um 19:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#30

AW: client encoding mismatch PostgreSQL 9.3

  Alt 31. Okt 2014, 19:19
Version: 9.03.02.10
ich hatte vorher mit der neuesten Version getestet, da ging es auch nicht,
dann bin ich einige Versionen zurückgegangen.

Das Problem lag nun daran, diesen String herauszufinden:
'Driver={PostgreSQL ODBC Driver(UNICODE)};' // statt 'Driver={PostgreSQL UNICODE};'

ich werde morgen wieder die neuere Version nehmen. Mal sehen, wie der String dann aussehen muss


ODBCinst.ini
hier hab ich immer (10Jahre) automatisch die Strings geholt bei der Kennzeichnung installed:

[MySQL ODBC 3.51 Driver (32 bit)]
Driver=C:\windows\SysWOW64\myodbc3.dll
Setup=C:\windows\SysWOW64\myodbc3S.dll
32Bit=1
[ODBC 32 bit Drivers]
MySQL ODBC 3.51 Driver (32 bit)=Installed
PostgreSQL Legacy (32 bit)=Installed
PostgreSQL Unicode (Beta) (32 bit)=Installed
PostgreSQL (32 bit)=Installed
[PostgreSQL Legacy (32 bit)]
Driver=C:\WINDOWS\SysWOW64\psqlodbc25.dll
Setup=C:\WINDOWS\SysWOW64\psqlodbc.dll
32Bit=1
[PostgreSQL Unicode (Beta) (32 bit)]
Driver=C:\WINDOWS\SysWOW64\psqlodbc30w.dll
Setup=C:\WINDOWS\SysWOW64\psqlodbc.dll
32Bit=1
[PostgreSQL (32 bit)]
Driver=C:\WINDOWS\SysWOW64\psqlodbc.dll
Setup=C:\WINDOWS\SysWOW64\psqlodbc.dll
32Bit=1

------------------------------------------------
"MySQL ODBC 3.51 Driver" geht immer noch super
"PostgreSQL Unicode" geht nun bei meiner Win-Version nicht mehr

Der neue String ist zumindest in der ODBC.ini Datei bei einer entsprechenden DSN zu finden:

[ODBC 32 bit Data Sources]
Microsoft Access-Datenbank=Microsoft Access-Treiber (*.mdb) (32 bit)
dBASE-Dateien=Microsoft dBase-Treiber (*.dbf) (32 bit)
Excel-Dateien=Microsoft Excel-Treiber (*.xls) (32 bit)
PostgreSQL35W=PostgreSQL ODBC Driver(UNICODE) (32 bit)
[Microsoft Access-Datenbank]
Driver32=C:\WINDOWS\system32\odbcjt32.dll
[dBASE-Dateien]
Driver32=C:\WINDOWS\system32\odbcjt32.dll
[Excel-Dateien]
Driver32=C:\WINDOWS\system32\odbcjt32.dll
[PostgreSQL35W]
Driver32=C:\Program Files (x86)\PostgreSQL\psqlODBC\0903\bin\psqlodbc35w.dll

Geändert von luisk (31. Okt 2014 um 19:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 00:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz