Ich muss diese Anweisungen in allen Tabellen für alle Spalten ausführen.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
Ist es möglich, dies in MySQL auf irgendeine Weise zu automatisieren? Ich würde es vorziehen, mysqldump zu vermeiden
Update: Richard Bronosky hat mir den Weg gezeigt :-)
Die Abfrage, die ich in jeder Tabelle ausführen musste:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Verrückte Abfrage, um alle anderen Abfragen zu generieren:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
Ich wollte es nur in einer Datenbank ausführen. Es dauerte zu lange, um alles in einem Durchgang auszuführen. Es stellte sich heraus, dass eine Abfrage pro Feld und Tabelle generiert wurde. Und nur eine Abfrage pro Tabelle war erforderlich (anders als bei der Rettung). Die Ausgabe auf eine Datei zu bekommen war, wie ich es realisiert habe.
So generieren Sie die Ausgabe in eine Datei:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';" > alter.sql
Und zum Schluss alle Abfragen ausführen:
mysql --user=user --password=secret < alter.sql
Danke Richard. Du bist der Mann!