mabue88
Goto Top

MySQL liefert Error 1366 direkt nach Verbindungsaufbau (mittels MySQL Connector .NET)

Hallo,

in einem C#-Programm kommt der MySQL Connector zum Einsatz.
Direkt nach dem Verbinden mit der Datenbank (ohne dass eine Abfrage durchgeführt wurde) kommt die folgende Fehler:

Incorrect string value: '\xE4ische...' for column 'VARIABLE_VALUE' at row 1  

Dabei handelt es sich um den Fehlercode 1366.

Im Netz gibt es enorm viel zu dieser Fehlermeldung, aber irgendwie kann ich damit nicht wirklich was anfangen...
Die meisten schreiben, dass es mit der Zeichenkodierung zusammenhängt.

Kann mir jemand mehr dazu sagen?

Danke
mabue

Content-Key: 258370

Url: https://administrator.de/contentid/258370

Printed on: April 25, 2024 at 01:04 o'clock

Mitglied: 114757
114757 Dec 24, 2014 updated at 08:42:50 (UTC)
Goto Top
Moin,
sieht so aus als hättest du in einer Spalte deiner Tabelle einen Wert gespeichert der mit dem Typ dieser Spalte nicht kompatibel ist, und wenn dann MySQL bemerkt das in einer Zeile ein Escape-String wie \xE4 vorkommt(und diese Spalte ist UTF-8 kodiert), der übrigens nicht mit UTF-8 dekodiert werden kann, kommt es zu diesem Fehler. Korrigiere also solche Daten in der Tabelle und wähle bei Bedarf ein binäres Format für die Spalte, je nachdem was darin gespeichert werden soll. Wenn das nicht möglich ist musst du deine Daten in der Spalte "serialisieren" mit serialize().

Gruß jodel32
Member: mabue88
mabue88 Dec 24, 2014 at 08:59:48 (UTC)
Goto Top
Hallo jodel32,

wie finde ich am einfachsten heraus, welche Tabelle die Spalte 'VARIABLE_VALUE' enthält?
Innerhalb meiner Datenbanken habe ich nämlich keine Spalte mit so einem Namen.

Demzufolge gehe ich davon aus, dass die entsprechende Tabelle in einer "Default"-Datenbank enthalten ist...

Danke
Gruss
mabue88
Mitglied: 114757
114757 Dec 24, 2014 updated at 10:01:28 (UTC)
Goto Top
Ich vermute das ist die Tabelle zu der du eine Verbindung herstellst. Der Wert der Spalte der in der Fehlermeldung genannt wird '\xE4ische...' sollte dir eigentlich genügend Hinweis liefern. Suche nach "ische".

Gruß jodel32
Member: mabue88
mabue88 Dec 24, 2014 at 10:06:57 (UTC)
Goto Top
Also ich verbinde mich mit einer Datenbank namens "test_db". Darin gibt es lediglich die Tabelle "test". Diese setzt sich aus den Spalten "ID", "Uhrzeit" und "Text" zusammen.

Momentan (während der Entwicklungsphase) schreibt mein Programm lediglich die Zeichenfolge "test" in die Spalte "Text". Die Uhrzeit wird per DEFAULT-Value von der Tabelle eingetragen. Bei der ID handelt es sich um einen selbst inkrementierenden Wert.

In meiner Datenbank/Tabelle kommt die Zeichenfolge "ische" also definitiv nicht vor.

Außerdem kam die Meldung bereits beim ersten Verbindungsaufbau mit der Datenbank, also zum Zeitpunkt als die Tabelle noch komplett leer war.

Danke
Gruss
mabue
Mitglied: 114757
114757 Dec 24, 2014 at 10:10:21 (UTC)
Goto Top
und was passiert wenn du mal eine neue DB mit einer neuen Tabelle anlegst, tritt das Verhalten dann dort auch auf ?
Member: mabue88
mabue88 Dec 24, 2014 at 10:28:44 (UTC)
Goto Top
Hab mal eine neue, komplett leere Datenbank angelegt (also ohne Tabellen).

Nach dem Verbinden kommt direkt die Fehlermeldung...
Mitglied: 114757
114757 Dec 24, 2014 updated at 10:46:30 (UTC)
Goto Top
gibst du im Verbindungsstring zur Datenbank das Character-Encoding mit ? (characterEncoding=utf8)

was zeigt dir ein SHOW VARIABLES in einer MySQL Konsole ?

Hier wird das Problem ausführlich diskutiert:
http://bugs.mysql.com/bug.php?id=54425

Folgender Abschnitt ist interessant:
[21 Jul 2010 9:37] Martin Kirchner
I could solve the problem with the encoding problem by switching my system's timezone from "Mitteleuropäische Sommerzeit" (Central european summer time) to UTC.
Gruß jodel32