Der Unterschied zwischen der Speicherung von Zeichen mit voller Breite und Zeichen mit halber Breite in MySQL

Der Unterschied zwischen der Speicherung von Zeichen mit voller Breite und Zeichen mit halber Breite in MySQL

Leider trat der Fehler MYSQL_DATA_TRUNCATED während der internen Tests von IM im Unternehmen erneut auf und der Protokolldatensatz erschien beim Aufruf von mysql_stmt_fetch. Nach bisherigen Erfahrungen sollte dies an der unzureichenden Länge des angegebenen Ergebnismengen-Bindungsbereichs liegen. Ich habe es mehrmals überprüft, konnte das Problem jedoch nicht finden. Ich habe entsprechende Beziehungen im Code. Beispielsweise werde ich für char(20) das Array char buffer[20] in meinem Code definieren, um es zu speichern. Es sieht so richtig und perfekt aus. Mir blieb nichts anderes übrig, als jede Datenzeile auszudrucken, die Zeile mit dem Fehler zu finden und festzustellen, dass die Schriftart sich von den anderen unterschied. Zum Beispiel:

123456789 (halbe Breite)
123456789 (volle Breite)

Dies wird nicht durch die Eingabe von Leerzeichen durch mich gesteuert, sondern über die Eingabemethode mit voller und halber Breite. Bei einem Zeichen voller Breite ist es doppelt so lang wie bei einem Zeichen halber Breite, und mein MySQL verwendet UTF-8, sodass ein Zeichen voller Breite in der Datenbank 3 Byte lang ist.

select length(column) from table_name where…;

Drucken Sie hiermit die Länge aus, dann können Sie es ablesen. Zu diesem Zeitpunkt müssen Sie das Problem berücksichtigen, die Länge des Typs im Code mit der Länge des Datenbankfelds abzugleichen, z. B. Zeichen in voller Breite oder chinesische Schriftzeichen. Das Zeichen char(20) in der Datenbank steht für 20 Zeichen, nicht für 20 Bytes. Bitte beachten Sie, dass Sie beim Abrufen von Daten nicht 20 als Länge des Ergebnissatzes verwenden.

<<:  WeChat-Miniprogramme ermöglichen nahtloses Scrollen

>>:  Zwei Möglichkeiten zum Aktivieren der Firewall im Linux-Dienst

Artikel empfehlen

Eine kurze Diskussion über MySQL-Ereignisplanungsaufgaben

1. Prüfen Sie, ob das Ereignis aktiviert ist Vari...

MySQL 5.7.12 Installations- und Konfigurations-Tutorial unter Mac OS 10.11

So installieren und konfigurieren Sie MySQL auf M...

Verwenden Sie xshell, um eine Verbindung zum Linux-Server herzustellen

Vorteile der Verwendung von xshell zur Verbindung...

Zusammenfassung von Beispielen gängiger Methoden von JavaScript-Arrays

Inhaltsverzeichnis Gängige Array-Methoden concat(...

MySql8 WITH RECURSIVE rekursive Abfrage Eltern-Kind-Sammlungsmethode

Hintergrund Wenn Sie eine Funktion entwickeln, di...

Details zur Verwendung von „order by“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

Einführung in die gängigen Festplattenverwaltungsbefehle von Linux

Inhaltsverzeichnis 1. df-Befehl 2. du-Befehl 3. B...

50 superpraktische Tools für Webdesigner

Webdesigner zu sein ist nicht einfach. Sie müssen...

calc(), um einen Vollbild-Hintergrundinhalt mit fester Breite zu erreichen

In den letzten Jahren gab es im Webdesign einen T...

Detaillierte Installationsanleitung für das Cloud-Server-Pagoda-Panel

Inhaltsverzeichnis 0x01. Installieren Sie das Pag...

CentOS 7 Installations- und Konfigurations-Tutorial unter VMware10

Während Ubuntu heute das beliebteste Linux-Betrie...