sql >> データベース >  >> RDS >> Mysql

RailsActiveRecordの移行でmysqlのvarchar列にCOLLATEutf8_binが生成されたのはなぜですか

    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 |
    +----------------------+-------------------+
    

    あなたの場合、これらの値の1つはutf8_binである必要があります 。データベースの一般的な値は、構成ファイル(おそらくmy.cnf)で設定できます。 MySQLの場合。特定のエンジン、文字セット、または照合を使用してMySQLテーブルを作成するには、移行オプションを使用できます。

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

    ドキュメントによると、テーブルの文字セットと照合 MySQL拡張機能であり、標準SQLにはそのようなものはありません。




    1. SQL Serverで1時間ごとにストアドプロシージャを実行するにはどうすればよいですか?

    2. SysBenchを使用してMySQLとMariaDBのパフォーマンスをベンチマークする方法

    3. MySQLGroupByで最新の結果を表示

    4. 繰り返されるテーブル内のレコードを削除するにはどうすればよいですか?