Es gibt ein MySQL table
, dessen Definition übernommen wurde aus SQLYog Enterprise
:
Table Create Table
----------------- ---------------------------------------------------------
etape_prospection CREATE TABLE `etape_prospection` (
`etape_prosp_id` int(10) NOT NULL AUTO_INCREMENT,
`type_prosp_id` int(10) NOT NULL DEFAULT '0',
`prosp_id` int(10) NOT NULL DEFAULT '0',
`etape_prosp_date` datetime DEFAULT NULL,
`etape_prosp_comment` text,
PRIMARY KEY (`etape_prosp_id`),
KEY `concerne_fk` (`prosp_id`),
KEY `de_type_fk` (`type_prosp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
Ich möchte die default charset
dieser Tabelle von latin1
auf ändern utf8
. Wie geht das ?
Antworten:
Wenn Sie die Tabelle
default character set
und alle Zeichenspalten in einen neuen Zeichensatz ändern möchten , verwenden Sie eine Anweisung wie folgt:Die Abfrage lautet also:
quelle
ALTER TABLE tbl CHARACTER SET utf8
von anderen vorgeschlagene Syntax verwenden, ändern Sie nur die Standardcodierung für die Tabelle. Bestehende Spalten werden nicht wie bei dieser Antwort konvertiert.SELECT concat('alter table ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.tables WHERE table_schema='<your_database_name>' and table_collation != 'utf8_general_ci' GROUP BY table_name;
ALTER TABLE tbl CHARACTER SET utf8
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ändern Sie den Standardzeichensatz der Tabelle:
So ändern Sie den Zeichensatz für Zeichenfolgenspalten: Führen Sie diese Abfrage aus:
quelle
Der
ALTER TABLE
MySQL-Befehl sollte den Trick machen. Der folgende Befehl ändert den Standardzeichensatz Ihrer Tabelle und den Zeichensatz aller Spalten in UTF8.Dieser Befehl konvertiert alle textähnlichen Spalten in der Tabelle in den neuen Zeichensatz. Zeichensätze verwenden unterschiedliche Datenmengen pro Zeichen, sodass MySQL den Typ einiger Spalten konvertiert, um sicherzustellen, dass genügend Platz für die gleiche Anzahl von Zeichen wie der alte Spaltentyp vorhanden ist.
Ich empfehle Ihnen, die ALTER TABLE MySQL-Dokumentation zu lesen, bevor Sie Live-Daten ändern .
quelle
Wenn jemand nach einer vollständigen Lösung sucht, um den Standardzeichensatz für alle Datenbanktabellen zu ändern und die Daten zu konvertieren, kann dies eine sein:
Sie können diesen Code in die Datei einfügen, z. B.
chg_char_set.sql
ausführen, indem Sie ihn vom MySQL-Terminal aus aufrufen:Rufen Sie dann die definierte Prozedur mit den gewünschten Eingabeparametern auf, z
Sobald Sie die Ergebnisse getestet haben, können Sie die gespeicherten Prozeduren löschen:
quelle
Sie können die Standardeinstellung mit ändern, dies ändert
alter table set default charset
jedoch nicht den Zeichensatz der vorhandenen Spalten. Um dies zu ändern, müssen Sie a verwendenalter table modify column
.Das Ändern des Zeichensatzes einer Spalte bedeutet nur, dass eine größere Anzahl von Zeichen gespeichert werden kann. Ihre Anwendung kommuniziert mit der Datenbank über den MySQL-Client, sodass Sie möglicherweise auch die Client-Codierung ändern müssen.
quelle