前提・実現したいこと
AES_ENCRYPTを使用してレコードを挿入したい。
DATABASE:sandbox TABLE:tests
mysql> show create database sandbox; +----------+------------------------------------------------------------------------------------------------+ | Database | Create Database | +----------+------------------------------------------------------------------------------------------------+ | sandbox | CREATE DATABASE `sandbox` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ | +----------+------------------------------------------------------------------------------------------------+ mysql> show create table tests; +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------+ | tests | CREATE TABLE `tests` ( `name` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | +-------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
発生している問題・エラーメッセージ
ERROR 1366 (HY000): Incorrect string value: '\x8D\x91\x82-\xFFB...' for column 'name' at row 1
該当のソースコード
mysql
1INSERT INTO tests ( `name` ) VALUES ( AES_ENCRYPT( 'hoge', '123456' ) );
試したこと
CentOS7.6のmysql5.7でcharacter setをutf8mb4でcollationはutf8mb4_unicode_ciに設定しました。
my.cnfの内容は
[mysqld] character_set_server=utf8mb4 collation_server=utf8mb4_unicode_ci datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] default-character-set = utf8mb4
となっています。
mysqlで
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
となっているので特に問題はないと思われます。
mysql
1INSERT INTO tests (`name`) VALUES ( 'hoge' );
だとレコードは登録されます。
文字コードが不整合なエラーだと思いますが、何処を確認したら良いでしょうか。
補足情報(FW/ツールのバージョンなど)
CentOS Linux release 7.6.1810 (Core)
mysql Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/18 04:26
退会済みユーザー
2019/07/18 04:49