Hervorragende Software und praktische Tutorials
Bei der Datenerfassung und -eingabe stoßen wir häufig aufSQLSTATE[22007]: Ungültiges Datums-/Uhrzeitformat: 1366 Fehler „Falscher Zeichenfolgenwert“. Dies ist ein Problem mit der Datenbank oder der Programmcodierung.
Viele Programme verwenden die Standard-UTF-8-Kodierung, um die UTF-8-Kodierung zu ändern inutf8mb4Damit lassen sich die meisten Probleme lösen.
So erzwingen Sie utf8mb4 in MySQL
Um die Verwendung des Zeichensatzes utf8mb4 in MySQL zu erzwingen, können Sie den Zeichensatz der Datenbank, der Tabelle und der Verbindung mit diesen einfachen Schritten auf utf8mb4 konfigurieren. Die einfachste Methode ist die folgende:
1. Ändern Sie die MySQL-Konfigurationsdatei
- Suchen Sie die MySQL-Konfigurationsdatei (normalerweise my.cnf oder my.ini, die sich in /etc/mysql/my.cnf oder /etc/my.cnf usw. oder im MySQL-Installationsverzeichnis unter Windows befinden kann).
- Fügen Sie der Konfigurationsdatei den folgenden Inhalt hinzu oder ändern Sie ihn:
[Client] Standardzeichensatz = utf8mb4 [mysql] Standardzeichensatz = utf8mb4 [mysqld] Zeichensatzserver = utf8mb4 Sortierserver = utf8mb4_unicode_ci init_connect = 'SET NAMES utf8mb4'
- Starten Sie nach dem Speichern den MySQL-Dienst neu:sudo service mysql restart
Oder (unter Windows) starten Sie MySQL im Services Manager neu.
2. Festlegen des Standardzeichensatzes für neue Datenbanken und Tabellen
- Geben Sie beim Erstellen einer neuen Datenbank utf8mb4 an:DATENBANK ERSTELLEN meine_Datenbank ZEICHENSATZ utf8mb4 SORTIERE utf8mb4_unicode_ci;
- So ändern Sie den Zeichensatz für eine vorhandene Datenbank:ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- So ändern Sie den Zeichensatz für eine vorhandene Tabelle:ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. Stellen Sie sicher, dass die Clientverbindung utf8mb4 verwendet
- Legen Sie beim Herstellen einer Verbindung mit MySQL den Verbindungszeichensatz fest:Namen festlegen utf8mb4;
- Wenn Sie eine Programmiersprache (wie PHP, Python) verwenden, stellen Sie sicher, dass in der Verbindungskonfiguration utf8mb4 angegeben ist:
- PHP (PDO):$pdo = neues PDO("mysql:host=localhost;dbname=meine_datenbank;charset=utf8mb4", "Benutzername", "Passwort");
- Python (MySQL-Konnektor):mysql.connector importierenconn = mysql.connector.connect(host="localhost", database="my_database", user="Benutzername", password="Passwort", charset="utf8mb4")
- PHP (PDO):
4. Überprüfen der Zeichensatzeinstellungen
- Überprüfen Sie den globalen Zeichensatz:VARIABLEN WIE „character_set%“ ANZEIGEN;VARIABLEN WIE „collation%“ ANZEIGEN;
- Stellen Sie sicher, dass character_set_server, character_set_database usw. utf8mb4 anzeigen und collation_server utf8mb4_unicode_ci ist.
Zusammenfassung der einfachsten Methode
- Ein-Schritt-Lösung: Ändern Sie die Datei my.cnf, fügen Sie die obigen Konfigurationen [client], [mysql] und [mysqld] hinzu und starten Sie MySQL neu. Dadurch wird allen neu erstellten Datenbanken und Tabellen standardmäßig die Verwendung von utf8mb4 ermöglicht, und die Clientverbindungen werden ebenfalls automatisch angepasst.
- Vorhandene Tabellen schnell reparieren: Führen Sie ALTER-Anweisungen für vorhandene Datenbanken und Tabellen aus, um sicherzustellen, dass alle Daten in utf8mb4 gespeichert werden.
- Beachten: Wenn sich Daten in der Datenbank befinden, sichern Sie die Daten, bevor Sie ALTER TABLE ausführen, um Datenverlust durch Zeichenkonvertierung zu vermeiden.
Wenn Sie auf ein bestimmtes Problem stoßen (z. B. eine ungültige Konfiguration oder verstümmelte Daten), geben Sie bitte weitere Details an, damit ich Ihnen bei der weiteren Fehlerbehebung helfen kann!
Was soll ich tun, wenn ich im Apple CMS auf SQLSTATE[22007] stoße: Ungültiges Datums-/Uhrzeitformat: 1366?
Wenn Sie pgcms zur Datenerfassung verwenden, kann der Fehler SQLSTATE[22007] auftreten: Ungültiges Datums-/Uhrzeitformat: 1366.
Die Lösung ist einfach. Bearbeiten Sie im Verzeichnis /application des Programms die Datei database.php
Standardmäßig wird die Datenbankkodierung verwendetutf8Ändern Sie es einfach in utf8mb4!
// Die Datenbankkodierung ist standardmäßig auf UTF-8 eingestellt.
'Zeichensatz' => 'utf8mb4',