2009-04-12 8 views
138
create table check2(f1 varchar(20),f2 varchar(20)); 

erstellt eine Tabelle mit der Standardsortierung latin1_general_ci;Wie ändert man die Standard-Sortierung einer Tabelle?

alter table check2 collate latin1_general_cs; 
show full columns from check2; 

zeigt die individuelle Sortierung der Spalten als 'latin1_general_ci'.

Was ist dann der Effekt des Befehls alter table?

+0

möglich Duplikat [Ändern Datenbankkollatierung] (http://stackoverflow.com/questions/5906585/change-database-collation) –

+0

Möglicherweise möchten Sie die richtige Antwort als mich verändern und viele andere scheinen zuzustimmen, dass die zweite die richtige ist. –

+1

@GregMiernicki getan. – dharm0us

Antwort

485

Um den Standardzeichensatz und Sortierung einer Tabelle (man beachte die zu Klausel konvertieren) der von vorhandenen Spalten einschließlich zu ändern:

alter table <some_table> convert to character set utf8 collate utf8_unicode_ci; 
+24

Genau war ich gesucht, danke. Die anderen Antworten erklären das Problem, aber dieses hat die Lösung. – Pablo

+3

Ich stimme zu. Dies ist definitiv, was meine Suche war. – James

+0

Wie sieht es aus? Ich muss für Ansicht ändern. –

9

Es legt die Standardsortierung für die Tabelle fest; Wenn Sie eine neue Spalte erstellen, sollte diese mit latin_general_ci verglichen werden - denke ich. Versuchen Sie, die Sortierung für die einzelnen Spalten anzugeben, und prüfen Sie, ob das funktioniert. MySQL hat ein ziemlich bizarres Verhalten hinsichtlich der Art und Weise, wie es damit umgeht.

+32

Scrollen Sie nach unten, um das Problem zu lösen – Moak

29

MySQL hat 4 Ebenen der Sortierung: Server, Datenbank, Tabelle, Spalte. Wenn Sie die Sortierung des Servers, der Datenbank oder der Tabelle ändern, ändern Sie nicht die Einstellung für jede Spalte, sondern die Standardsortierungen.

Wenn Sie beispielsweise die Standardsortierung einer Datenbank ändern, verwendet jede neue Tabelle, die Sie in dieser Datenbank erstellen, diese Sortierung. Wenn Sie die Standardsortierung einer Tabelle ändern, erhält jede Spalte, die Sie in dieser Tabelle erstellen, diese Sortierung .

+4

Tatsächlich hat MySQL ** FIVE ** Kollationierungsstufen, es gibt eine Standardeinstellung für die Sortierreihenfolge auf Zeichensatzebene, die viele Leute vergessen. – Devy

+2

Es gibt auch eine Verbindungskollatierung 'show Variablen wie" collation% ";', also total ist *** SIX ***. –

0

kann das SCHEMA nicht nur Tabelle ändern muß

ALTER SCHEMA <table name> DEFAULT ZEICHENSATZ utf8 STANDARD COLLATE utf8_general_ci;

(MariaDB 10)

+0

'' statt '

' – dnivog

Verwandte Themen