sql >> Databáze >  >> RDS >> Mysql

Proč migrace Rails Active Record vygenerovala COLLATE utf8_bin na varchar sloupcích mysql

utf8_bin řazení se používá k porovnání řetězců v režimu rozlišování malých a velkých písmen podle binární hodnoty každého znaku. Může záviset na vašem místním nastavení databáze, která znaková sada nebo řazení se použije. Například u databáze MySQL můžete zkontrolovat režim řazení vaší databáze MySQL pomocí následujícího příkazu MySQL

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

..nebo pomocí tohoto..

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

Ve vašem případě by jedna z těchto hodnot měla být utf8_bin . Obecné hodnoty pro databázi lze nastavit ve vašem konfiguračním souboru, pravděpodobně my.cnf pro MySQL. Chcete-li vytvořit tabulku MySQL s konkrétním enginem, znakovou sadou nebo porovnáváním, můžete použít možnosti migrace:

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

Podle dokumentace znaková sada a řazení tabulky jsou rozšíření MySQL, ve standardním SQL žádné takové nejsou.




  1. Aktualizujte datum v databázi o +1 měsíc

  2. PostgreSQL:Proč se psql nemůže připojit k serveru?

  3. Sequelize:Rodič s alespoň jedním dítětem

  4. Dvě zvláštnosti rozdělení