Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо миграцията на Rails Active Record генерира COLLATE utf8_bin на varchar колони на mysql

utf8_bin съпоставянето се използва за сравняване на низове в режим, чувствителен към малки и големи букви, по двоичната стойност на всеки знак. Може да зависи от вашите локални настройки на вашата база данни кой набор от знаци или съпоставяне се използва. Например за MySQL база данни, можете да проверите режима на съпоставяне на вашата MySQL база данни чрез следната команда MySQL

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

..или като използвате този...

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

Във вашия случай една от тези стойности трябва да бъде utf8_bin . Общите стойности за базата данни могат да бъдат зададени във вашия конфигурационен файл, вероятно my.cnf за MySQL. За да създадете MySQL таблица със специфичен двигател, набор от знаци или съпоставяне, можете да използвате опции за миграция:

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

Според документацията наборът от символи и сортиране на таблицата са MySQL разширения, няма такива неща в стандартния 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. Как да запишете в базата данни множество автори в таблица с прости книги?

  2. Добавете много данни с известен интервал от време в Java

  3. Как да актуализирате база данни на mysql без презареждане на страницата

  4. Как да използвам име на променлива в SQL израз?

  5. SQL Group BY, използвайки низове в нови колони