Finden Sie das Problem Ich habe vor Kurzem Django gelernt und bin beim Einfügen von Daten in Verbindung mit MySQL-Daten auf das folgende Problem gestoßen: /usr/local/lib/python2.7/dist-packages/Django-1.11.dev20170117002028-py2.7.egg/django/db/backends/mysql/base.py:109: Warnung: Falscher String-Wert: '\xE6\x88\x90\xE5\x8A\x9F...' für Spalte 'json' in Zeile 1 gibt self.cursor.execute(Abfrage, Argumente) zurück [07/Feb/2017 12:15:21] "GET /index/ HTTP/1.1" 200 250 Chinesisch kann nicht in die MySQL-Datenbank eingefügt werden~! ~! Datenbankkodierung anzeigen mysql> anzeigen, Datenbank erstellen, Bangjob; +----------+---------------------------------------------------------+ | Datenbank | Datenbank erstellen | +----------+---------------------------------------------------------+ | bangjob | DATENBANK `bangjob` ERSTELLEN /*!40100 STANDARDZEICHENSATZ latin1 */ | +----------+---------------------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> Variablen wie „%char%“ anzeigen; +-----------------------------+----------------------------+ | Variablenname | Wert | +-----------------------------+----------------------------+ | Zeichensatzclient | utf8 | | Zeichensatzverbindung | utf8 | | Zeichensatzdatenbank | latin1 | | Zeichensatz_Dateisystem | Binär | | Zeichensatzergebnisse | utf8 | | Zeichensatzserver | latin1 | | Zeichensatzsystem | utf8 | | Zeichensatzverzeichnis | /usr/share/mysql/charsets/ | +-----------------------------+----------------------------+ 8 Zeilen im Satz (0,00 Sek.) Datenbankkodierung ändern mysql> setze Zeichensatzdatenbank=utf8; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) mysql> setze Zeichensatzserver=utf8; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) Anzeigen der geänderten Ergebnisse mysql> Variablen wie „%char%“ anzeigen; +-----------------------------+----------------------------+ | Variablenname | Wert | +-----------------------------+----------------------------+ | Zeichensatzclient | utf8 | | Zeichensatzverbindung | utf8 | | Zeichensatzdatenbank | utf8 | | Zeichensatz_Dateisystem | Binär | | Zeichensatzergebnisse | utf8 | | Zeichensatzserver | utf8 | | Zeichensatzsystem | utf8 | | Zeichensatzverzeichnis | /usr/share/mysql/charsets/ | +-----------------------------+----------------------------+ 8 Zeilen im Satz (0,00 Sek.) Es besteht zu diesem Zeitpunkt kein Problem, mit dem Einfügen fortzufahren. Es wäre schön, wenn es so einfach wäre, denn solche Änderungen werden nach einem Neustart von MySQL ungültig! ! ! Suchen Sie weiter nach anderen Methoden sudo gedit /etc/mysql/my.cnf Fügen Sie dem entsprechenden Knoten in der Datei my.cnf die folgenden Informationen hinzu: [Kunde] Standardzeichensatz = utf8 [mysqld] Standardzeichensatz = utf8 [mysql] Standardzeichensatz = utf8 Starten Sie dann MySQL neu: /etc/init.d/mysql starten Wenn Sie neu starten können, überprüfen Sie die Datenbankcodierung erneut: mysql> Variablen wie "%char%" anzeigen; +-----------------------------+----------------------------+ | Variablenname | Wert | +-----------------------------+----------------------------+ | Zeichensatzclient | utf8 | | Zeichensatzverbindung | utf8 | | Zeichensatzdatenbank | utf8 | | Zeichensatz_Dateisystem | Binär | | Zeichensatzergebnisse | utf8 | | Zeichensatzserver | utf8 | | Zeichensatzsystem | utf8 | | Zeichensatzverzeichnis | /usr/share/mysql/charsets/ | +-----------------------------+----------------------------+ 8 Zeilen im Satz (0,01 Sek.) Es wäre schön, wenn es wirklich so wäre. Die Dinge sind nie so einfach, wie wir es uns vorstellen: Beim Neustart des MySQL-Dienstes wurde festgestellt, dass er sich immer im Wartezustand befand (PS: Ich vermute, es ist ein Deadlock aufgetreten oder so etwas). Führen Sie zu diesem Zeitpunkt Folgendes aus: mysql -u root -p Es wird eine Ausnahme ausgelöst: FEHLER 2002 (HY000): Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' nicht möglich (2) Ich möchte nur den Code ändern. Warum ist das so schwer? Ich habe viele Möglichkeiten ausprobiert, um dieses Problem zu lösen (Neustart, Wiederherstellung). . . . . sudo /etc/init.d/mysql status Überprüfen Sie den Status von MySQL: Diese Methoden können das Problem nicht lösen, also beginnen wir mit dem Protokoll ... Suchen Sie die Protokolldatei /var/log/mysql/error.log Suchen Sie weiter nach einer Lösung für Antwort: [mysqld] Ändern Sie OK, wir können MySQL endlich neu starten und die von uns nach dem Neustart festgelegte Kodierung ist weiterhin wirksam. Natürlich muss die zuvor erstellte Datenbank neu erstellt werden T_T Weil Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit hilfreich sein kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Das könnte Sie auch interessieren:
|
<<: So leiten Sie über den Nginx-Lastausgleich zu https um
>>: So erstellen Sie einen untergeordneten Prozess in nodejs
Inhaltsverzeichnis Fehler 1: Zu viele Datenspalte...
Hintergrund In diesem Artikel wird hauptsächlich ...
Inhaltsverzeichnis 1. Vorstellen gemäß der Bestel...
Inhaltsverzeichnis Erste Schritte Datenspeicherun...
Heute fiel mir plötzlich ein, die Produktionsprinz...
Inhaltsverzeichnis Hierarchie des Tomcat-Klassenl...
Dieser Artikel stellt ein interessantes Pseudoele...
Einführung in HTML HyperText-Auszeichnungssprache...
Während des Entwicklungs- und Debugging-Prozesses...
Die Bedeutung von Datenkonsistenz und -integrität...
1. MySQL-Selbstverbindung MySQL muss beim Abfrage...
brauchen: Den Geschäftsanforderungen entsprechend...
Inhaltsverzeichnis Einige grundlegende Anweisunge...
Im Docker Starten Sie alle Containerbefehle Docke...
Führen Sie zunächst eine einfache Docker-Installa...