Problem mit UTF8 in Verbindung mit Perl

Problem mit UTF8 in Verbindung mit Perl

am 20.06.2005 11:29:16 von mgs-AntiSpam

Ich verwende eine MySQL Datenbank v4.1.12a unter Windows 2003. Der
Standardzeichensatz ist UTF-8. Die Datenbank wird von ActiveState Perl
angesprochen. Das Problem taucht auf, unabhängig ob die "use Mysql" oder die
"DBI/DBD" Komponente verwendet wird.

Wenn die Verbindung zur Datenbank hergestellt wird, erscheint...

File 'C:\mysql\\share\charsets\?.conf' not found (Errcode: 2)
Character set '#33' is not a compiled character set and is not specified in
the 'C:\mysql\\share\charsets\Index'

Der Pfad c:\mysql ist falsch. Das MySQL wurde an anderer Stelle installiert.
Aber selbst wenn ich das charsets Verzeichnis an die angegebene Stelle
kopiere, erscheint der Fehler trotzdem.

Wenn ich die Datenbank zum Beispiel mit dem MySQL Query Browser verwende,
gibt es keine Probleme.

--
Michael G. Schneider
Movable Type Weblog
http://www.movable-type-weblog.com/

Re: Problem mit UTF8 in Verbindung mit Perl

am 20.06.2005 17:49:22 von Axel Schwenke

"Michael G. Schneider" wrote:
> Ich verwende eine MySQL Datenbank v4.1.12a unter Windows 2003. Der
> Standardzeichensatz ist UTF-8. Die Datenbank wird von ActiveState Perl
> angesprochen.
>
> Wenn die Verbindung zur Datenbank hergestellt wird, erscheint...
> File 'C:\mysql\\share\charsets\?.conf' not found (Errcode: 2)
> Character set '#33' is not a compiled character set and is not specified in
> the 'C:\mysql\\share\charsets\Index'

Dein MySQL-Server bzw. Client sind mit verschiedenen Einstellungen für
die unterstützten Zeichensätze compiliert worden. Stelle einen anderen
Default-Zeichensatz ein.

Oder (besser) verwende Komponenten nur aus einer Hand. Wenn du weißt,
was du tust, solltest du Perl die mysql-DLL des installierten Servers
unterschieben können. Für die Details frage einen Windows-Guru.
Ich bin keiner ;-)


XL

Re: Problem mit UTF8 in Verbindung mit Perl

am 21.06.2005 06:44:04 von mgs-AntiSpam

"Axel Schwenke" schrieb im Newsbeitrag
news:2io69d.eks.ln@idefix.xl.local...
> "Michael G. Schneider" wrote:

> Dein MySQL-Server bzw. Client sind mit verschiedenen Einstellungen für
> die unterstützten Zeichensätze compiliert worden. Stelle einen anderen
> Default-Zeichensatz ein.

Ich nehme absichtlich den UTF-8 Zeichensatz. Daher möchte ich keinen anderen
verwenden.

> Oder (besser) verwende Komponenten nur aus einer Hand. Wenn du weißt,
> was du tust, solltest du Perl die mysql-DLL des installierten Servers
> unterschieben können. Für die Details frage einen Windows-Guru.
> Ich bin keiner ;-)

Das verstehe ich nicht ganz. Was meinst Du mit "aus einer Hand"? Es gibt die
MySQL Datenbank und es gibt das ActiveState Perl, welches hier zum Einsatz
kommt. Die haben offensichtlich Probleme, sich zu verstehen. Aus wessen
einziger Hand soll ich die Komponenten nehmen?

--
Michael G. Schneider
Movable Type Weblog
http://www.movable-type-weblog.com/

Re: Problem mit UTF8 in Verbindung mit Perl

am 21.06.2005 17:40:14 von Axel Schwenke

"Michael G. Schneider" wrote:
> "Axel Schwenke" schrieb im Newsbeitrag
> news:2io69d.eks.ln@idefix.xl.local...
>> "Michael G. Schneider" wrote:
>
>> Dein MySQL-Server bzw. Client sind mit verschiedenen Einstellungen für
>> die unterstützten Zeichensätze compiliert worden. Stelle einen anderen
>> Default-Zeichensatz ein.
>
> Ich nehme absichtlich den UTF-8 Zeichensatz.

Warum ist es so wichtig, was der Default für den Server ist?
Stell halt für deine Datenbank(en) UTF-8 ein.

>> Oder (besser) verwende Komponenten nur aus einer Hand. Wenn du weißt,
>> was du tust, solltest du Perl die mysql-DLL des installierten Servers
>> unterschieben können. Für die Details frage einen Windows-Guru.
>> Ich bin keiner ;-)
>
> Das verstehe ich nicht ganz. Was meinst Du mit "aus einer Hand"? Es gibt die
> MySQL Datenbank und es gibt das ActiveState Perl

Perl bedeutet DBI, DBI bedeutet DBD-Mysql. Letzteres ist ein C-to-Perl
Wrapper um die MySQL-Client-Library (UNIX: libmysqlclient.so , WIN:
libmysql.dll). Unter UNIX gibt es Systemverzeichnisse für shared
Libraries, dadurch verwenden alle Clients die "richtige" Library
(nämlich die, die das Server-Package installiert hat). Unter Windows
halten Programme ihre Libraries typischerweise in ihren Installations-
verzeichnissen. Also such mal, ob du bei Perl eine libmysql.dll findest
und ob es besser wird, wenn du die durch die aus dem MySQL-Verzeichnis
ersetzt (vorher eine Kopie machen!)


XL

Re: Problem mit UTF8 in Verbindung mit Perl

am 21.06.2005 19:35:21 von mgs-AntiSpam

"Axel Schwenke" schrieb im Newsbeitrag
news:ucc99d.nmr.ln@idefix.xl.local...
> "Michael G. Schneider" wrote:

Vielen Dank für die Hilfe.


>> Ich nehme absichtlich den UTF-8 Zeichensatz.
>
> Warum ist es so wichtig, was der Default für den Server ist?
> Stell halt für deine Datenbank(en) UTF-8 ein.

Ok, jetzt erst verstanden. Du gehtst davon aus, dass wenn ich beispielsweise
latin1 als Default einstelle, dann aber beim konkreten Anlegen der Tabellen
das utf8 angebe, der Fehler nicht auftritt. Woran siehst Du das? Das Problem
taucht doch nicht beim Anlegen der Tabellen auf sondern beim Verbinden mit
der Datenbank.

Ich werde das aber mal probieren. Weil es sich um eine Fremdsoftware
handelt, muss ich erst mal schauen, wie dort die Tabellen angelegt werden.


> Also such mal, ob du bei Perl eine libmysql.dll findest
> und ob es besser wird, wenn du die durch die aus dem MySQL-Verzeichnis
> ersetzt (vorher eine Kopie machen!)

Es gibt auf dem Server dreimal die libmysql.dll. Alle liegen unter MySQL,
eine im Adminstrator-, eine im Query-Browser- und eine im Server
Verzeichnis. Unter Perl gibt es nur eine mysql.dll, die liegt unter
site\lib\auto\DBD\mysql und ist viel kleiner.

--
Michael G. Schneider
Movable Type Weblog
http://www.movable-type-weblog.com/

Re: Problem mit UTF8 in Verbindung mit Perl

am 21.06.2005 22:56:19 von Axel Schwenke

"Michael G. Schneider" wrote:
> "Axel Schwenke" schrieb im Newsbeitrag
>
>> Also such mal, ob du bei Perl eine libmysql.dll findest
>> und ob es besser wird, wenn du die durch die aus dem MySQL-Verzeichnis
>> ersetzt (vorher eine Kopie machen!)
>
> Es gibt auf dem Server dreimal die libmysql.dll. Alle liegen unter MySQL,
> eine im Adminstrator-, eine im Query-Browser- und eine im Server
> Verzeichnis.

Im Zweifelsfall ist die vom Server die richtige. Aber wie ich schon
sagte: jeder Client bringt seine eigene DLL mit. Eben doch DLL Hell.

> Unter Perl gibt es nur eine mysql.dll, die liegt unter
> site\lib\auto\DBD\mysql und ist viel kleiner.

Das sieht vernünftig aus. Allerdings *könnte* das auch die Perl-
Extension sein, die werden auch als shared Lib implementiert.


XL

Re: Problem mit UTF8 in Verbindung mit Perl

am 30.06.2005 08:34:56 von mgs-AntiSpam

"Axel Schwenke" schrieb im Newsbeitrag
news:ucc99d.nmr.ln@idefix.xl.local...
> "Michael G. Schneider" wrote:

>> Ich nehme absichtlich den UTF-8 Zeichensatz.
>
> Warum ist es so wichtig, was der Default für den Server ist?
> Stell halt für deine Datenbank(en) UTF-8 ein.

Sorry, wegen der späten Antwort. Ich musste das Problem ein paar Tage liegen
lassen.

Ich habe es also mal versucht, und den Default auf latin1 eingestellt. Das
Problem taucht nicht mehr auf. Es ergibt sich also folgende Situation...

Default utf8: Es erfolgt die angegebene Meldung beim Aufbau der Connection.
Die Arbeit (Insert, Update, Delete, etc) ist aber möglich - sowohl mit
latin1 und utf8 Tabellen.

Default latin1: Es erfolgt keine Meldung beim Aufbau der Connection. Die
Arbeit (Insert, Update, Delete, etc) ist natürlich auch möglich.

Macht das Sinn? Warum gibt es das Problem beim Verbinden mit der Datenbank?

--
Michael G. Schneider
Movable Type Weblog
http://www.movable-type-weblog.com/