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
Erstellen Sie ein neues Projekt test1 auf Code Cl...
Vorwort Kürzlich mit mysql /usr/local/mysql/bin/m...
Als Vue-Benutzer ist es an der Zeit, React zu erw...
Inhaltsverzeichnis Oracle-Isolationsebenen MySQL-...
Laden Sie das Image herunter (optionaler Schritt,...
SQLyog stellt eine Verbindung zu MySQL her, Fehle...
Offizielle Docker-Dokumentation: https://docs.doc...
Code kopieren Der Code lautet wie folgt: <hr S...
B-Baum ist eine allgemeine Datenstruktur. Daneben...
Vorwort: Aufgrund meiner Arbeit beschäftige ich m...
In diesem Artikelbeispiel wird der spezifische Ja...
Inhaltsverzeichnis Vorwort 1. Was ist ein Abschlu...
1. Zählen Sie die Anzahl der Benutzer, deren Stan...
Die Wirkung ist wie folgt: Der Code lautet wie fo...
Webseite WB.ExecWB-Steuerungsdruckmethode Code ko...