• 締切済み

utf8mb4でもInsertエラー

エンコーディング「SQL_ASCII」で作成されたpostgreSQLのデータを、MySQLに取り込む作業を行っています。 初めMySQL側のデータベースを「utf8」で作成していたのですが、絵文字やサロゲートペアに対応していないとのことで、「utf8mb4」に変更しました。 にも拘わらず、INSERT時に以下のエラーメッセージがでます。 exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\x82' for column 'note' at row 1' in ・・・ 「utf8mb4」にした際に行ったことは以下です。 --my.cnf [mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4 -- mysqlを再起動した後、各character_setが「utf8mb4」に変更されたことを確認し、 新しくデータベースを生成し、テーブルを作成しました。 CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ となったので、問題ないと考えています。 問題の文字をスルーしてInsertするか、問題の文字のみを除去してInsertするかしたいのですが、できずにいます。 何か足りない操作等があるのでしょうか・・ 是非お力をお貸しいただきたく思います。 よろしくお願いいたします。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\x82' for column 'note' at row 1' in ・・・ utf8は複数バイトで1文字を構成するわけですが '\xE3\x82' というバイト並びの文字はないです('\xE3'で始まる場合3バイトで1文字を構成するので1バイト足りない)。 符号化がutf8ではなくutf16になってる気がしますけど。

関連するQ&A