Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego migracja Railsów Active Record wygenerowała COLLATE utf8_bin na kolumnach varchar mysql

utf8_bin sortowanie jest używane do porównywania ciągów w trybie rozróżniania wielkości liter, według wartości binarnej każdego znaku. Może to zależeć od lokalnych ustawień bazy danych, który zestaw znaków lub sortowanie jest używane. Na przykład w przypadku bazy danych MySQL możesz sprawdzić tryb sortowania bazy danych MySQL za pomocą następującego polecenia MySQL

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

..lub używając tego..

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

W twoim przypadku jedną z tych wartości powinna być utf8_bin . Ogólne wartości bazy danych można ustawić w pliku konfiguracyjnym, prawdopodobnie my.cnf dla MySQL. Aby utworzyć tabelę MySQL z określonym silnikiem, zestawem znaków lub sortowaniem, możesz użyć opcji migracji:

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

Zgodnie z dokumentacją zestaw znaków tabeli i sortowanie są rozszerzeniami MySQL, nie ma takich rzeczy w standardowym SQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczna rozwijana wartość z bazy danych

  2. SQL Return 1,0 w nowej zmiennej na podstawie przypadku, gdy instrukcja odnosi się do wielu innych zmiennych

  3. Suma nakładających się zakresów dat i godzin w MySQL

  4. PHP MySQL pobiera lokalizacje w lokalizacji użytkownika w promieniu z GPS

  5. Hibernacja:jaka jest różnica między MySQLDialect a MySQLInnoDBDialect?