Heim Betrieb und Instandhaltung Docker Analysieren und lösen Sie das Problem des verstümmelten MySQL-Codes in Docker

Analysieren und lösen Sie das Problem des verstümmelten MySQL-Codes in Docker

Apr 25, 2023 am 09:19 AM

Docker ist eine beliebte Containerisierungsplattform, die die Anwendungsbereitstellung und -verwaltung einfacher und effizienter macht. Die MySQL-Datenbank ist ein integraler Bestandteil vieler Anwendungen. Bei der Verwendung von MySQL in Docker stößt man jedoch manchmal auf verstümmelte Zeichen, was nicht nur die Richtigkeit der Daten beeinträchtigt, sondern auch den Entwicklern unnötigen Ärger bereitet.

In diesem Artikel werden das verstümmelte Problem von MySQL in Docker und mögliche Lösungen vorgestellt.

1. Das Problem des verstümmelten Codes von MySQL in Docker

Verstümmelter Code bedeutet, dass die auf dem Client abgefragten Daten nicht den Erwartungen entsprechen und es einige nicht erkennbare Zeichen oder Verhaltensweisen gibt.

Dieses Problem tritt sehr häufig auf, wenn MySQL in Docker ausgeführt wird. Insbesondere wenn die Kodierungsmethode der MySQL-Datenbank auf UTF-8 eingestellt ist, können die folgenden Situationen auftreten:

1 Beim Einfügen von Daten werden die normalen chinesischen oder anderen Sprachzeichen der Daten zu zufälligen Zeichen.

2. Wenn der Client Daten abfragt, enthalten die zurückgegebenen Daten eine große Anzahl verstümmelter Zeichen.

Eigentlich werden diese Probleme nicht durch Docker oder MySQL selbst verursacht, sondern durch einige falsche Einstellungen und Konfigurationen.

2. Lösung für MySQL in Docker

1. Überprüfen Sie den Zeichensatz der Datenquelle. Die Hauptursache für verstümmelte Zeichen ist, dass der Zeichensatz der Datenbank nicht mit dem Zeichensatz der Datenquelle übereinstimmt. Wir müssen bestätigen, ob der Zeichensatz der Datenquelle UTF-8 ist, um die Korrektheit der Datenübertragung zwischen verschiedenen Systemen sicherzustellen.

Überprüfen Sie den MySQL-Standardzeichensatz in MySQL mit dem folgenden Befehl:

show variables like 'character%';
Nach dem Login kopieren

Character_set_client, Character_set_connection und Character_set_results in den angezeigten Ergebnissen sollten alle utf8mb4 sein. Andernfalls kann es zu verstümmelten Zeichen kommen.

Um MySQL in Docker auszuführen, müssen Sie der Dockerfile- oder Docker-Compose-Konfigurationsdatei die folgenden Parameter hinzufügen:

...
environment:
  MYSQL_ROOT_PASSWORD: root
  MYSQL_DATABASE: test
  MYSQL_USER: test
  MYSQL_PASSWORD: test
  MYSQL_CHARSET: utf8mb4
  MYSQL_COLLATION: utf8mb4_unicode_ci
...
Nach dem Login kopieren

Unter diesen sind MYSQL_CHARSET und MYSQL_COLLATION der Zeichensatz bzw. die Sortiermethode.

2. Ändern Sie die MySQL-Konfigurationsdatei

Wenn Sie MySQL in Docker ausführen, können Sie auch die MySQL-Konfigurationsdatei ändern, um den richtigen Zeichensatz und die richtige Sortiermethode zu erreichen.

Geben Sie die MySQL-Konfigurationsdatei my.cnf ein und fügen Sie unten die folgende Konfiguration hinzu:

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
skip-character-set-client-handshake
Nach dem Login kopieren

Um MySQL in Docker auszuführen, müssen Sie zuerst my.cnf in den Container kopieren:

...
volumes:
  - ./my.cnf:/etc/mysql/conf.d/my.cnf
...
Nach dem Login kopieren

3. Überprüfen Sie den MySQL-Client-Charakter set

Wenn Sie MySQL in Docker ausführen, müssen Sie sicherstellen, dass der Zeichensatz des Clients (z. B. des Betriebssystems und der MySQL-Client-Tools usw.) ebenfalls UTF-8 ist.

Unter Linux können Sie den Zeichensatz des aktuellen Systems mit dem folgenden Befehl anzeigen:

$ echo $LANG
Nach dem Login kopieren

Wenn LANG andere Zeichensätze zurückgibt, müssen Sie die LANG-Umgebungsvariable zu Ihrer Shell-Konfigurationsdatei hinzufügen:

$ echo "export LANG='en_US.utf8'" >> ~/.bashrc
Nach dem Login kopieren

In Windows-Systemen , Sie müssen sicherstellen, dass der Zeichensatz des Client-Tools (wie Navicat usw.) ebenfalls UTF-8 ist.

4. MySQL-Spaltenattribute festlegen

In MySQL wirken sich auch der Zeichensatz und die Sortierregeln in den Spaltenattributen auf die Richtigkeit der Abfrageergebnisse aus. Standardmäßig übernehmen die Spalteneigenschaften einer neuen MySQL-Tabelle die Standardeinstellungen des MySQL-Servers. Wenn der Zeichensatz und die Sortierung des MySQL-Servers nicht übereinstimmen, kann es zu verstümmelten Zeichen kommen.

Um dieses Problem zu lösen, können Sie die Spaltenattribute manuell auf Folgendes setzen:

CREATE TABLE test (
  name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
...
);
Nach dem Login kopieren

Beim Erstellen der Tabelle finden Sie oben einige Lösungen für das verstümmelte Problem von MySQL in Docker. Entwickler können entsprechend ihren eigenen Bedürfnissen und der tatsächlichen Situation eine Methode wählen, die zu ihnen passt. In einer Produktionsumgebung müssen die Anwendungsbereitstellung und -konfiguration sorgfältig getestet und überprüft werden, um die Systemstabilität und -zuverlässigkeit sicherzustellen.

Das obige ist der detaillierte Inhalt vonAnalysieren und lösen Sie das Problem des verstümmelten MySQL-Codes in Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Fragen zum Docker -Interview: Ace Ihr DevOps Engineering Interview Fragen zum Docker -Interview: Ace Ihr DevOps Engineering Interview Apr 06, 2025 am 12:01 AM

Docker ist ein Muss für DevOps-Ingenieure. 1.Docker ist eine Open -Source -Containerplattform, die Isolation und Portabilität durch Verpackung von Anwendungen und deren Abhängigkeiten in Container erreicht. 2. Docker arbeitet mit Namespaces, Kontrollgruppen und föderierten Dateisystemen. 3. Die grundlegende Nutzung beinhaltet das Erstellen, Ausführen und Verwalten von Containern. 4. Erweiterte Verwendung umfasst die Verwendung von DockerComponpose zur Verwaltung von Anwendungen mit mehreren Konten. 5. Zu den häufigen Fehlern gehören Containerausfall, Port -Mapping -Probleme und Datenpersistenzprobleme. Zu den Debugging -Fähigkeiten gehören das Anzeigen von Protokollen, das Eingeben von Containern und das Anzeigen detaillierter Informationen. 6. Leistungsoptimierung und Best Practices umfassen Bildoptimierung, Ressourcenbeschränkungen, Netzwerkoptimierung und Best Practices für die Verwendung von DockerFile.

Docker -Bände: Verwalten anhaltender Daten in Containern Docker -Bände: Verwalten anhaltender Daten in Containern Apr 04, 2025 am 12:19 AM

Dockervolumes stellt sicher, dass Daten sicher bleiben, wenn Container neu gestartet, gelöscht oder migriert werden. 1. Erstellen Sie Volumen: DockervolumecreatemyData. 2. Führen Sie den Container- und Mount-Volumen aus: Dockerrun-it-vmydata:/App/DataUbuntubash. 3. Die erweiterte Nutzung umfasst Datenaustausch und Backup.

Härtung der Docker -Sicherheit: Schutz Ihrer Container vor Schwachstellen Härtung der Docker -Sicherheit: Schutz Ihrer Container vor Schwachstellen Apr 05, 2025 am 12:08 AM

Zu den Methoden zur Verbesserung der Docker Security Enhancement gehören: 1. Verwenden Sie den Parameter-Cap-Drop, um Linux-Funktionen zu begrenzen. Diese Strategien schützen Container, indem sie die Exposition gegenüber der Verwundbarkeit reduzieren und die Fähigkeiten des Angreifers einschränken.

Verwenden von Docker mit Linux: eine umfassende Anleitung Verwenden von Docker mit Linux: eine umfassende Anleitung Apr 12, 2025 am 12:07 AM

Die Verwendung von Docker unter Linux kann die Entwicklung und die Bereitstellungseffizienz verbessern. 1. Installieren Sie Docker: Verwenden Sie Skripte, um Docker auf Ubuntu zu installieren. 2. Überprüfen Sie die Installation: Führen Sie die Sudodockerrunhello-Welt aus. 3. Basisnutzung: Erstellen Sie einen Nginx-Container-Dockerrun-Namemy-Nginx-P8080: 80-DNGinx. 4. Erweiterte Verwendung: Erstellen Sie ein benutzerdefiniertes Bild, erstellen und führen Sie mit Dockerfile aus. 5. Optimierung und Best Practices: Befolgen Sie Best Practices zum Schreiben von Dockerfiles mit mehrstufigen Builds und DockerComponpose.

Erweiterte Docker -Netzwerk: Mastering Bridge, Host & Overlay Networks Erweiterte Docker -Netzwerk: Mastering Bridge, Host & Overlay Networks Apr 03, 2025 am 12:06 AM

Docker bietet drei Hauptnetzwerkmodi: Bridge Network, Host Network und Overlay Network. 1. Das Brückennetz ist für eine Intercontainer-Kommunikation auf einem einzelnen Host geeignet und wird über eine virtuelle Brücke implementiert. 2. Das Host-Netzwerk eignet sich für Szenarien, in denen Hochleistungsnetzwerke erforderlich sind, und der Container verwendet direkt den Netzwerkstapel des Hosts. 3. Das Overlay-Netzwerk eignet sich für Multi-Host-Docker-Warm-Cluster, und die Cross-Host-Kommunikation wird durch die virtuelle Netzwerkschicht realisiert.

So erstellen Sie einen Spiegel in Docker So erstellen Sie einen Spiegel in Docker Apr 15, 2025 am 11:27 AM

Schritte zum Erstellen eines Docker -Images: Schreiben Sie eine Dockerfile, die die Build -Anweisungen enthält. Erstellen Sie das Bild im Terminal mit dem Befehl Docker Build. Markieren Sie das Bild und weisen Sie Namen und Tags mit dem Befehl Docker Tag zu.

So aktualisieren Sie das Bild von Docker So aktualisieren Sie das Bild von Docker Apr 15, 2025 pm 12:03 PM

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

Docker Swarm: bauen skalierbare und belastbare Behältercluster Docker Swarm: bauen skalierbare und belastbare Behältercluster Apr 09, 2025 am 12:11 AM

Dockerswarm kann verwendet werden, um skalierbare und hoch verfügbare Containercluster zu erstellen. 1) Initialisieren Sie den Schwarmcluster mithilfe von Dockerswarminit. 2) Schließen Sie sich dem Swarm-Cluster an, um Dockerswarmjoin zu verwenden-gesprochen:. 3) Erstellen Sie einen Dienst mit DockerServicecreate-Namemy-Nginx-Replicas3nginx. 4) Bereitstellen komplexer Dienste mit DockStackdeploy-Cdocker-compose.ymlmyApp.

See all articles