RailsのMySQLへのレコード追加で「ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value」が発生した件

RailsのデータベースでMySQLを使用して、

通常通り処理を行う中で、

「ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value」

というエラーが発生した。

あれ、何か変更したかな?

と考えながら色々とデータを確認したら、

😆

などの絵文字が入っていたので、

そちらが登録するときに、

エラーが発生していた。

今回のエラー内容と、

対応した内容をメモ。

前提

MySQLの文字コードについては、

MySQLに接続して、

以下のコマンドで状況を確認

SHOW VARIABLES LIKE 'chara%';

確認してみると、

「utf8mb4」

でマルチバイト文字対応している。

mysql> SHOW VARIABLES LIKE 'chara%';
+--------------------------+----------------------------+
| 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     | utf8mb3                    |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

エラー内容

エラーは先ほども説明したが、

対象テーブルへのインサートのタイミングで、

以下のようなエラーが発生していた。

ActiveRecord::StatementInvalid
 (Mysql2::Error: Incorrect string value: '\xF0\x9F\x8C\xBF' 
 for column 'column_name' at row 1):

対応内容

この事象の調整方法としては、

  • charactor codeを「utf8mb4」に変更する

ということで対応できた。

自分の環境では、

データベースに対しては、

「utf8mb4」

となっているので、

Railsの環境周り、マイグレーションでの作成時に、

「utf8」になっているので、

以下の調整を実施。

修正ファイル

vi config/database.yml

修正内容

default: &default
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_polish_ci

上記に加えて、

テーブル作成時のcharactor codeの設定も調整

class LazadaGroups ...
  def change
    create_table ...CHARSET=utf8mb4", force: :cascade do |t|

こちらの設定をして、

あとは、

  • マイグレーションの再実行
  • サーバー自体の再起動

を実施して、

再度確認するとうまく動いたので完了。

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事