sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor genererede Rails Active Record-migrering COLLATE utf8_bin på varchar-kolonner i mysql

utf8_bin sortering bruges til at sammenligne strenge i en tilstand, der skelner mellem store og små bogstaver, med den binære værdi af hvert tegn. Det kan afhænge af dine lokale indstillinger i din database, hvilket tegnsæt eller sortering der bruges. For en MySQL-database kan du f.eks. kontrollere sorteringstilstanden for din MySQL-database ved hjælp af følgende MySQL-kommando

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

..eller ved at bruge denne..

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

I dit tilfælde skal en af ​​disse værdier være utf8_bin . De generelle værdier for databasen kan indstilles i din konfigurationsfil, sandsynligvis my.cnf til MySQL. For at oprette en MySQL-tabel med en specifik motor, tegnsæt eller sortering kan du bruge migreringsmuligheder:

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

Ifølge dokumentationen er tabeltegnsæt og sortering er MySQL-udvidelser, er der ikke sådanne ting i standard SQL.




  1. Importer data.sql MySQL Docker Container

  2. Indsæt i 2 tabeller med PDO MySQL

  3. Sådan oprettes og manipuleres SQL-databaser med Python

  4. Hvordan kan jeg bruge Date Datatype i sql server?