Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que a migração do Rails Active Record gerou COLLATE utf8_bin em colunas varchar do mysql


O utf8_bin collation é usado para comparar strings em um modo sensível a maiúsculas e minúsculas, pelo valor binário de cada caractere. Pode depender de suas configurações locais de seu banco de dados qual conjunto de caracteres ou agrupamento é usado. Por exemplo, para um banco de dados MySQL, você pode verificar o modo de agrupamento do banco de dados MySQL com o seguinte comando MySQL
mysql> SELECT COLLATION(VERSION());
+----------------------+
| COLLATION(VERSION()) |
+----------------------+
| utf8_general_ci      |
+----------------------+

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

No seu caso, um desses valores deve ser utf8_bin . Os valores gerais para o banco de dados podem ser definidos em seu arquivo de configuração, provavelmente my.cnf para MySQL. Para criar uma tabela MySQL com um mecanismo, conjunto de caracteres ou agrupamento específico, você pode usar as opções de migração:
create_table :users, 
        :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'
        ...

De acordo com a documentação, o conjunto de caracteres de tabela e agrupamento são extensões do MySQL, não existem essas coisas no SQL padrão.