AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

Ein Thema von Codehunter · begonnen am 17. Mär 2018 · letzter Beitrag vom 22. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.228 Beiträge
 
Delphi 10.4 Sydney
 
#1

ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 17. Mär 2018, 22:48
Datenbank: MariaDB • Version: 10 • Zugriff über: ZEOS
Hallo!

Wenn ich mittels ZEOS den Query
Code:
SELECT * FROM `mysql`.`user`;
an eine MariaDB absetze, bekomme ich im Ergebnis nur "Datengrütz" für die Spalten "User" und "Host". Wenn ich mit HeidiSQL schaue, dann definiert MariaDB diese beiden Spalten mit der Collation "utf8_bin". Ich vermute, dass bei ZEOS die interne Konvertierung nicht klappt, wenn ich versuche mit FieldByName().AsString darauf zuzugreifen. Wie lese ich solche Spalten richtig aus? Im Netz finde ich dazu nicht wirklich was außer dem Hinweis, man möge doch "einfach" die Collation der Spalten ändern auf "utf8_general_ci". Was natürlich seeeeehr hilfreich ist bei DBMS-internen Tabellen

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 09:55
Hallo Cody!

nein Zeos hat keine Encodierungs-Probleme mehr. Schaust du dir die Felder und deren Typen an, erkennt man, daß ftBytes als TField.DataType festgestellt wurde. Das ist natürlich nicht richtig. Es scheint dir aber auch nicht aufgefallen zu sein.
TField.AsString macht dann erst das/den/die(was ist richtig?)
Zitat von Codehunter:
"Datengrütz"
Wie lese ich solche Spalten richtig aus?
Das ist die einzige Frage,die ich hier entnehmen kann. Irgendwelche simple Improvisationen möchte ich hier nicht anführen, das sollte Zeos für dich schon auflösen können.

Patch done R4383 /testing-7.2 (SVN)

p.s. dafür gibt es das Ticket-System: https://sourceforge.net/p/zeoslib/tickets/
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.228 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 13:13
Hallo Egon,

ich bitte die ein oder andere Formulierung mir nachzusehen. Zu meiner Entschuldigung verweise ich auf die Uhrzeit des Post und die 15 Stunden Coden davor

nein Zeos hat keine Encodierungs-Probleme mehr. Schaust du dir die Felder und deren Typen an, erkennt man, daß ftBytes als TField.DataType festgestellt wurde. Das ist natürlich nicht richtig. Es scheint dir aber auch nicht aufgefallen zu sein.
TField.AsString macht dann erst das/den/die(was ist richtig?)
Zitat von Codehunter:
"Datengrütz"
ZEOS ist relativ neu für mich, ich war bzw. bin hauptsächlich mit UniDAC unterwegs. Das kommt aber beim betreffenden Projekt nicht in Frage. Daher der Versuch mit ZEOS. Die besagte Tabelle ist ja bei allen 10er MariaDB so vorhanden und IMHO auch bei neueren MySQL. Daher sollte das Problem einfach nachstellbar sein. Mit HeidiSQL sehe ich "root" und andere Benutzernamen in der Spalte
Code:
mysql.user.User
aber wenn ich mit ZEOS auslese, erhalte ich chinesisch aussehende Zeichenketten und Nuller: '潲瑯#0#0#0#0#0#0#0#0#0#0#0'

Grüße
Cody

PS: Ich bin mit der zeosdbo-7.2.3-rc unterwegs.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (18. Mär 2018 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 14:41
Schon mal Probiert wenn der Zielstring-Variable ein Ansistring ist ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.228 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 14:51
Schon mal Probiert wenn der Zielstring-Variable ein Ansistring ist ?
Ja das war sogar mein erster Gedanke. Der Unterschied ist dabei lediglich, dass anstelle der chinesischen Zeichen dann "?" auftauchen, wieder gefolgt von vielen Nullern.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.228 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 15:30
Da gibt es auch noch andere Probleme. Bei folgendem Query erhalte ich in HeidiSQL eine Liste der Benutzernamen:
Code:
SELECT CONVERT(CAST(User as BINARY) USING utf8) FROM `mysql`.`user`;
in ZEOS dagegen erhalte ich den Fehler "Das Feld User wurde nicht gefunden."
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.228 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 15:46
Haaaabs rausgefunden

Das Problem scheint darin begründet zu sein, dass die Spalte genauso heißt wie die Tabelle (mysql.user.User). Gibt man das explizit an, klappt es nicht nur mit dem Cast sondern auch mit dem Auslesen als String im Delphi:
Code:
SELECT `user`.`User` COLLATE UTF8_GENERAL_CI AS `User` FROM `mysql`.`user`;
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 17:43
Wir können nicht täglich einen RC erstellen nur weil ein Käfer weniger durch die Relais wandert.

Wie gesagt der Fix ist im SVN erhältlich und nicht in der 7.2.3-rc.

Ich denke in ca. 2-3 Wochen machen wir den Deckel mit 7.2 zu und lösen meine Uralt 7.1.4 ab. 7.3 ist ja auch schon vor mehr als 3 Jahren unter meiner Fuchtel entstanden(Native OleDB access da die ADO Zwichenschicht total lahm ist und Native ODBC + weitere Features)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.228 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 18. Mär 2018, 19:02
Wie gesagt der Fix ist im SVN erhältlich und nicht in der 7.2.3-rc.
So genau ging das eigentlich gar nicht hervor. Wie gesagt ich bin kein ZEOS-Urgestein. Daher hab ich das nicht gleich realisiert dass der Fix NACH der 7.2.3-rc kam. Es sind mir noch ein paar andere Nicklichkeiten aufgefallen (z.B. ENUMs werden zu Boolean gecastet und dann von .AsString immer als "Wahr" ausgelesen statt als CHAR). Da warte ich jetzt einfach mal die Final ab. Gibt noch genug andere Baustellen die ich bis dahin beackern kann
7.3 ist ja auch schon vor mehr als 3 Jahren unter meiner Fuchtel entstanden(Native OleDB access da die ADO Zwichenschicht total lahm ist und Native ODBC + weitere Features)
Das klingt sehr interessant. Ich erinnere mich da mit Grausen an die Kombination AnySQL Maestro + Sybase DB über ADO. Allein das Öffnen eines Wawi-Schema führte zu 12 Minuten Eieruhring Ich bin da an einem Projekt dran, da könnte mir die 7.3 sehr gelegen kommen. Gibt es da schon einen Zeithorizont?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (18. Mär 2018 um 19:07 Uhr)
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: ZEOS ZQuery liest Spalte mit Collation utf8_bin nicht richtig aus

  Alt 21. Mär 2018, 06:26
Hi Cody,

Zitat von CodeHunter:
kam. Es sind mir noch ein paar andere Nicklichkeiten aufgefallen (z.B. ENUMs werden zu Boolean gecastet und dann von .AsString immer als "Wahr" ausgelesen statt als CHAR)
Was ist damit? Zeos + MySQL mappt den enum('Y','N') zu ftBoolean. Das ist schon immer so, da MySQL keinen Boolean-Typen hat. Hast du andere Probleme mit dem Enums?
7.2-stable wird Jan dieses WE machen wollen: http://zeoslib.sourceforge.net/viewt...p?f=40&t=71794

Wegen der 7.3 + Zeithorizont. Nicht wirklich, schön wäre noch diesen Sommer. Soll heißen es wäre schön daß mal so einige damit loslegen, damit mehr Tests/Reports der Benutzer bekommen. Hinterher kritisieren kann jeder...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 00:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf