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

挿入トリガーがアクティブなときに4バイトのUTF-8文字/絵文字をMySQLデータベースに挿入する際の問題

    これは、information_schema.processlistが原因で発生します UTF8mb3文字セットを使用しています。 (UTFはUTFmb3のエイリアスです)。この簡単なクエリはこれを示しています:

    mysql> select info, "🔥" from information_schema.processlist;
    +------------------------------------------------------+------+
    | info                                                 | ?    |
    +------------------------------------------------------+------+
    | select info, "?" from information_schema.processlist | 🔥     |
    +------------------------------------------------------+------+
    1 row in set, 1 warning (0,00 sec)
    
    Warning (Code 1366): Incorrect string value: '\xF0\x9F\x94\xA5" ...' for column 'INFO' at row 1
    

    上記の警告は、トリガーがinfoのコンテンツを挿入しようとしたときにエラーになる可能性があります 別のテーブルへの列。

    問題は、クエリ文字列がprocesslistにそのまま保存されていることだと思います。 期待される文字セットに変換せずにテーブル。 バグレポート を提出しました これについて。



    1. PDO AdvancedCRUDGeneratorツールを使用してPHPCRUDインターフェイスをすばやく構築する

    2. SQLシングルクエリを出力する(Yii 1.x)

    3. SQLエラー:ORA-00942テーブルまたはビューが存在しません

    4. 一意のフィールドがないテーブルに行がまだ存在しない場合は、mysqlを挿入します