MyODBC-3.51.05 Bug?

MyODBC-3.51.05 Bug?

am 18.05.2006 16:09:45 von Stefan Schwerdtner

Hi,

ein VB 6.0 Frontend greift auf MySQL 4.1.x ueber den
MyODBC-3.51.05 Treiber zu. Wenn der MySQL-Server
per default auf Latin1 steht, funktioniert alles
bestens. Steht der SQL-Server per default auf
UTF8, gibt's Probleme bei den Umlauten, auch wenn
die DB, sowie die Tables, ausdruecklich auf Latin1
gesetzt wurden.

Es scheint, dass der Treiber nicht, wie eigentlich
vorgesehen, in der Reihenfolge Field -> Table -> DB
-> Server vorgeht, sondern bei der Anmeldung lapidar
nach der Defaulteinstellung des Servers fragt, und die
Angaben in der DB und den Fields einfach ignoriert.

Nun finde ich auch keinerlei Einstellungsmoeglichkeit
den Zeichensatz im Connectionstring zu uebergeben.
Offensichtlich ist dies auch nicht vorgesehen.

Jetzt sitze ich allerdings dicke in der Patsche, da
der Server definitiv nicht auf Latin1 geswitcht
werden kann, da dort noch andere Applikationen am
Start sind.

Hat jemand eine Idee, was ich da noch machen kann?

Viele Gruesse und vielen Dank,
Stefan

Re: MyODBC-3.51.05 Bug?

am 18.05.2006 17:10:49 von Axel Schwenke

Stefan Schwerdtner wrote:
>
> ein VB 6.0 Frontend greift auf MySQL 4.1.x ueber den
> MyODBC-3.51.05 Treiber zu. Wenn der MySQL-Server
> per default auf Latin1 steht, funktioniert alles
> bestens. Steht der SQL-Server per default auf
> UTF8, gibt's Probleme bei den Umlauten, auch wenn
> die DB, sowie die Tables, ausdruecklich auf Latin1
> gesetzt wurden.

Leider schreibst du nichts von der wichtigsten Einstellung
überhaupt: dem Encoding für Verbindung/Resultate.

> Es scheint, dass der Treiber nicht, wie eigentlich
> vorgesehen, in der Reihenfolge Field -> Table -> DB
> -> Server vorgeht, sondern bei der Anmeldung lapidar
> nach der Defaulteinstellung des Servers fragt, und die
> Angaben in der DB und den Fields einfach ignoriert.

Du hast anscheinend den Mechanismus nicht verstanden. Der
Client (aus MySQL-Sicht ist der ODBC-Treiber ein solcher)
sagt dem Server, in welchem Encoding er Strings senden bzw.
empfangen möchte. Der Server wandelt dann Strings passend um.
Sobald der Client das korrekte Encoding anmeldet, ist alles
andere für ihn transparent.

> Nun finde ich auch keinerlei Einstellungsmoeglichkeit
> den Zeichensatz im Connectionstring zu uebergeben.
> Offensichtlich ist dies auch nicht vorgesehen.

Interaktive Clients wählen das Connection-Encoding passend
zu den Fähigkeiten ihrer Umgebung (z.B. der Konsole).
Der ODBC-Client hat keine derartige Umgebung und es kann
durchaus sein, daß er statt dessen den Server-Default
verwendet. Man kann aber auch die "default-charset" Option
in my.cnf setzen. Details verrät das freundliche Handbuch.

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.ht ml
http://dev.mysql.com/doc/refman/5.0/en/character-sets.html
http://dev.mysql.com/doc/refman/5.0/en/connection-parameters .html


XL

Re: MyODBC-3.51.05 Bug?

am 18.05.2006 18:09:08 von Stefan Schwerdtner

Axel Schwenke schrieb:
> Stefan Schwerdtner wrote:
>
>>[snip]ichbinbloed[/snip]
>
> Leider schreibst du nichts von der wichtigsten Einstellung
> überhaupt: dem Encoding für Verbindung/Resultate.

Jo, da lag ein grosser Irrglaube vor.

> Du hast anscheinend den Mechanismus nicht verstanden.

Das hast Du jetzt aber sehr freundlich umschrieben.
Ich habe in der Tat den Mechanismus ueberhaupt gar nicht
verstanden. Ich habe es irgendwie exakt umgekehrt
verstanden. Ich ging davon aus, dass der Server entsprechend
im Feld/Tabelle/DB/Server nach dem Standard schaut.

> rtfm

In der Tat, ich hatte gerade einen der von dir geposteten
Links offen und war am Staunen. Es laeuft jetzt wie man
das auch erwarten kann.

Vielen Dank und viele Gruesse,
Stefan