


emoji - thinkphp mysql Wie kann ich die angegebene Tabelle mit der angegebenen Zeichenkodierung abfragen und bedienen?
Das Problem ist folgendes:
Es gibt eine Datenbank mit vielen Tabellen und vielen vorhandenen Daten. Die meisten dieser Daten sind in utf8 gespeichert (nicht alle, es gibt auch latin1).
Wir sind auf ein Problem gestoßen, bei dem Benutzer Emojis nicht speichern konnten. Es ist bekannt, dass utf8mb4 für die korrekte Speicherung erforderlich ist.
Mysql wurde von 5.1 auf 5.6.26 aktualisiert. Nächste Gedanken und bestehende Versuche:
1. Wenn die gesamte Datenbank auf uft8mb4 aktualisiert wird, ist das Risiko zu groß, da die verschiedenen Aufrufstellen chaotisch und schlecht gewartet werden. Wenn sie direkt auf utf8mb4 geändert wird, ist das gesamte System möglicherweise nicht möglich normal sein.
2. Erwägen Sie, nur die Tabelle, in der Benutzer Emojis speichern (im Folgenden als Tabelle E bezeichnet), auf uft8mb4 zu aktualisieren, und die Codierungseinstellungen werden in config abgelegt. Wenn Sie dies ändern, wird thinkphp vollständig zerstört.
3. Wenn wir 2 betrachten, verwendet der Hauptteil von thinkphp weiterhin uft8 unverändert und nur vorübergehend uft8mb4, wenn diese Tabelle E abgefragt wird. Versuchen Sie M()->query('SET NAMES 'utf8mb4'');
und erhalten Sie die Fehlermeldung: SQLSTATE[HY000]: General error
4. Ich denke immer noch über Methode 2 nach, aber sie funktioniert nicht. Denn auch nach erfolgreicher Abfrage dieser Tabelle E werden Vorgänge für andere Tabellen ausgeführt und uft8mb4 kann bei der nachfolgenden Abfrage Fehler verursachen.
Gibt es eine gute Möglichkeit, Vorgänge, die utf8mb4 kodieren, nur für diese Tabelle auszuführen, ohne die Vorgänge anderer Tabellen zu beeinträchtigen?
PS: Da die Produktionsumgebung seit einem Jahr online ist und über viele Daten und Online-Benutzer verfügt, wurde dieses Problem erst jetzt in Tests gemeldet. Es ist zu riskant, die Codierung der gesamten Datenbank zu aktualisieren. Die Idee des Leiters besteht darin, zuerst die Fallstricke zu beseitigen und so zu tun, als würde er die nicht entdeckten Fallstricke nicht erkennen.
Glücklicherweise habe ich beim Aufbau des Systems die Produktionsumgebung installiert und MySQL war zu Beginn die neueste Version 5.6.26. Ich hoffe, dass die Methode der Neucodierung von Emojis nur als letzte Lösung eingesetzt wird.
Antwortinhalt:
Das Problem ist folgendes:
Es gibt eine Datenbank mit vielen Tabellen und vielen vorhandenen Daten. Die meisten dieser Daten sind in utf8 gespeichert (nicht alle, es gibt auch latin1).
Wir sind auf ein Problem gestoßen, bei dem Benutzer Emojis nicht speichern konnten. Es ist bekannt, dass utf8mb4 für die korrekte Speicherung erforderlich ist.
Mysql wurde von 5.1 auf 5.6.26 aktualisiert. Nächste Gedanken und bestehende Versuche:
1. Wenn die gesamte Datenbank auf uft8mb4 aktualisiert wird, ist das Risiko zu groß, da die verschiedenen Aufrufstellen chaotisch und schlecht gewartet werden. Wenn sie direkt auf utf8mb4 geändert wird, ist das gesamte System möglicherweise nicht möglich normal sein.
2. Erwägen Sie, nur die Tabelle, in der Benutzer Emojis speichern (im Folgenden als Tabelle E bezeichnet), auf uft8mb4 zu aktualisieren, und die Codierungseinstellungen werden in config abgelegt. Wenn Sie dies ändern, wird thinkphp vollständig zerstört.
3. Wenn wir 2 betrachten, verwendet der Hauptteil von thinkphp immer noch uft8 und verwendet uft8mb4 nur vorübergehend, wenn diese Tabelle E abgefragt wird. Versuchen Sie M()->query('SET NAMES 'utf8mb4'');
und erhalten Sie die Fehlermeldung: SQLSTATE[HY000]: General error
4. Ich denke immer noch über Methode 2 nach, aber sie funktioniert nicht. Denn auch nach erfolgreicher Abfrage dieser Tabelle E werden Vorgänge für andere Tabellen ausgeführt und uft8mb4 kann bei der nachfolgenden Abfrage Fehler verursachen.
Gibt es eine gute Möglichkeit, Vorgänge, die utf8mb4 kodieren, nur für diese Tabelle auszuführen, ohne die Vorgänge anderer Tabellen zu beeinträchtigen?
PS: Da die Produktionsumgebung seit einem Jahr online ist und über viele Daten und Online-Benutzer verfügt, wurde dieses Problem erst jetzt in Tests gemeldet. Es ist zu riskant, die Codierung der gesamten Datenbank zu aktualisieren. Die Idee des Leiters besteht darin, zuerst die Fallstricke zu beseitigen und so zu tun, als würde er die nicht entdeckten Fallstricke nicht erkennen.
Glücklicherweise habe ich beim Aufbau des Systems die Produktionsumgebung installiert und MySQL war zu Beginn die neueste Version 5.6.26. Ich hoffe, dass die Methode der Neucodierung von Emojis nur als letzte Lösung eingesetzt wird.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP bleibt in der modernen Webentwicklung wichtig, insbesondere in Content-Management- und E-Commerce-Plattformen. 1) PHP hat ein reichhaltiges Ökosystem und eine starke Rahmenunterstützung wie Laravel und Symfony. 2) Die Leistungsoptimierung kann durch OPCACHE und NGINX erreicht werden. 3) Php8.0 führt den JIT -Compiler ein, um die Leistung zu verbessern. 4) Cloud-native Anwendungen werden über Docker und Kubernetes bereitgestellt, um die Flexibilität und Skalierbarkeit zu verbessern.

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.
