NEWS
[gelöst]SQL Adapter nutzt bei MySQL falsche Kollation (Zeichenkodierung)
-
Bei mir hat der Adapter die Tabellen auf meinem MySQL alle richtig angelegt. Jedoch nutzt er hier einen falschen Zeichensatz => Schwedisch:

Vielelicht wird der Create Table Befehl nicht richtig aufgerufen?
Frage: Was sollte denn hier rein? UTF-8 wäre ja gut. Mache mir Gedanken um die Umlaute. Habe es neu angelegt und daher noch keine Messwerte.
-
Wie du siehst hier:
https://github.com/ioBroker/ioBroker.sq … ysql.js#L1
Es wird kein speziellen Zeichensatz definiert, d.h. es wird default genommen und bei dir hast du default als schwedisch. ;)
-
Nope. Habe utf-8 default
Man soll meines wissens nach nur noch tabellen mit zeichensatzdefinition anlegen.
Weisst du wie es geht?
CREATE TABLE table_name (id INT(11) NOT NULL,
column_name VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,)
Hallo
es kann kein generelles Problem sein,… `
Oder einfach nur glück gehabt. Oder die db hält sich nicht an vorgaben. Laut doku soll man es wohl machen. Ist es nicht da gibt es halt einen undefinierten Zustand. Irgendwas muss das system ja dann verwenden. Das ist dann halt irgendetwas. Kann gut gehen muss aber nicht -
Ich habe provisorisch so gelöst:
https://github.com/ioBroker/ioBroker.sq … ysql.js#L3
Um aber bestehende DB zu konvertieren muss man folgendes aufrufen:
ALTER DATABASE iobroker CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE iobroker; ALTER TABLE sources CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE datapoints CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE ts_string CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; -
Danke. Das sieht gut aus.
@Bluefox:Um aber bestehende DB zu konvertieren muss man folgendes aufrufen:
ALTER DATABASE iobroker CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE iobroker; ALTER TABLE sources CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE datapoints CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE ts_string CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ```` `Ich habe es noch für die Tabelle ts_bool und ts_number der Form halber angepasst:
Der SQL Batch ist also:
ALTER DATABASE iobroker CHARACTER SET utf8 COLLATE utf8_unicode_ci; USE iobroker; ALTER TABLE sources CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE datapoints CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE ts_string CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE ts_bool CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE ts_number CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
