Rolf B: Ruft fehler bei dem Datenbank

Beitrag lesen

Hallo liebewinter,

bist Du sicher, dass Du nach der richtigen Fehlerursache suchst?

Die Fehlermeldung sagt, dass dieses Statement

'select\n oxvarname, oxvartype, DECODE( oxvarvalue, 'fq45QS09_fqyx09239QQ') as oxvarvalue\n from oxconfig\n where oxshopid = ? and oxmodule LIKE ?'

mit diesen Parametern aufgerufen wird:

with params [1, "\x74\x68\x65\x6d\x65\x3a\x14\x28\x0d\x4c\x97\xa5\xee\xaa\x20\xb8\x1a\x7b\x1e\x57\x25"]

Der erste Parameter ist eine 1, das wäre die oxshopid. Der zweite Parameter ist eine wilde Folge aus Hex-Zeichen. Wenn ich die decodiere, ergibt sich

thme:\x14(\0dL—¥îª ¸\x14{\x1eW%

Das ist ein seltsamer Name für ein oxmodule. Ist es wirklich nötig, das Encoding der Datenbank zu ändern?

Ich frage: Woher kommt dieser Hex-String? Ist das Datenmüll?

Aber wenn Du ändern willst: lies das Handbuch. MySQL 5.7 hat drei Befehle zum ändern von Spalten: CHANGE, MODIFY und ALTER. Dokumentation. In MySQL 8 kommt noch RENAME COLUMN hinzu.

Mit CHANGE änderst Du den Namen UND die Definition der Spalte. Wenn Du den Namen nicht ändern willst, musst Du ihn bei CHANGE zweimal hinschreiben. Wenn Du nur die Definition ändern willst, dann nimm MODIFY.

ALTER TABLE OXCONFIG MODIFY OXID ...

Für das ... musst Du die vollständige neue Spaltendefinition angeben. Nicht nur die Collation.

Aber: Warum OXID? Diese Spalte wird in der SQL Abfrage nicht verwendet. Meine Vermutung ist: Das Problem ist bei OXMODULE. Welche COLLATION hat diese Spalte jetzt?

Also: Lieber noch einmal nachdenken. Woher kommt dieses \x...\x...\x...? Ist das wirklich richtig so? Guck in die OXCONFIG Tabelle hinein. Welche Werte stehen in der OXMODULE Spalte? Steht da wirklich etwas wie thme:\x14(\0dL—¥îª ¸\x14{\x1eW%??? Wenn nicht, dann ist dein Parameter Müll und es ist falsch, die Datenbank zu ändern.

Rolf

--
sumpsi - posui - obstruxi