Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum hat die Rails Active Record-Migration COLLATE utf8_bin für varchar-Spalten von mysql generiert

Der utf8_bin Die Sortierung wird verwendet, um Zeichenfolgen in einem Modus mit Berücksichtigung der Groß-/Kleinschreibung anhand des Binärwerts jedes Zeichens zu vergleichen. Es kann von Ihren lokalen Einstellungen Ihrer Datenbank abhängen, welcher Zeichensatz oder Kollatierung verwendet wird. Beispielsweise können Sie für eine MySQL-Datenbank den Sortierungsmodus Ihrer MySQL-Datenbank mit dem folgenden MySQL-Befehl überprüfen

mysql> SELECT COLLATION(VERSION());
+----------------------+
| COLLATION(VERSION()) |
+----------------------+
| utf8_general_ci      |
+----------------------+

..oder mit diesem hier..

mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

In Ihrem Fall sollte einer dieser Werte utf8_bin sein . Die allgemeinen Werte für die Datenbank können in Ihrer Konfigurationsdatei eingestellt werden, wahrscheinlich my.cnf für MySQL. Um eine MySQL-Tabelle mit einer bestimmten Engine, einem bestimmten Zeichensatz oder einer Sortierung zu erstellen, können Sie Migrationsoptionen verwenden:

create_table :users, 
        :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'
        ...

Gemäß der Dokumentation ist der Tabellenzeichensatz und -sortierung sind MySQL-Erweiterungen, in Standard-SQL gibt es solche Dinge nicht.