![]() |
AW: client encoding mismatch PostgreSQL 9.3
Zitat:
Code:
oder
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=;
Code:
Das
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=;
Delphi-Quellcode:
muss natürlich auch den Gegebenheiten angepasst werden (sollte aber klar sein) ;)
PASSWORD
|
AW: client encoding mismatch PostgreSQL 9.3
Zitat:
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? |
AW: client encoding mismatch PostgreSQL 9.3
"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. |
AW: client encoding mismatch PostgreSQL 9.3
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? |
AW: client encoding mismatch PostgreSQL 9.3
Zitat:
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. |
AW: client encoding mismatch PostgreSQL 9.3
"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:
aber der freie String mit "PostgreSQL UNICODE" läuft nicht:
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
Delphi-Quellcode:
Da bekomme ich allerdings nun diese Meldung:
'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=;'; "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. |
AW: client encoding mismatch PostgreSQL 9.3
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich teste mit diesem hochkomplexen Programm
Delphi-Quellcode:
ob da eine Verbindung Zustandekommen oder nicht (EXE im Anhang)
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. 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:
Nachher:
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=;
Code:
Anyway, bei beiden klappt die Verbindung ganz vorzüglich (du kannst es selber testen).
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=" Ach ja: Meine installierte postgreSQL ODBC Version lautet: 9.03.04.00 (die aktuelleste die ich gefunden habe) |
AW: client encoding mismatch PostgreSQL 9.3
so geht der Mist nun:
Delphi-Quellcode:
Ich hab nun den String verwendet, den der ODBC-Konfigurator in der Verwaltung anbietet.
'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=;'; 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. |
AW: client encoding mismatch PostgreSQL 9.3
Liste der Anhänge anzeigen (Anzahl: 1)
Dann verrate doch mal DEINE Version des ODBC-Treibers?
Da schaut man nach, wenn man wissen will wie der Treiber-Name lautet Anhang 42086 und erfreulicherweise steht auch die Versionsnummer dabei |
AW: client encoding mismatch PostgreSQL 9.3
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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