LoginSignup
0
0

More than 3 years have passed since last update.

Mysql2::Error at /auth/twitter/callback Incorrect string value: 【Rails】

Posted at

Mysql2::Error at /auth/twitter/callback Incorrect string value:

MtSQLのエラーで、保存する値に絵文字:cake::cake::cake:が含まれていると起きる。

絵文字を扱うことが出来る文字コードはutf8mb4だがデータベースに設定されていた文字コードはutf8だった。それが原因。

MySQLに設定された文字コードを調べる

$ show variables like "chara%";

文字コードを変更する

MySQLのファイルはルートディレクトリの/etc/my.cnfにある。

$ vim my.cnf

以下のようにutf8utf8mb4に変更と追記。

[mysqld]
(省略)
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

DBの再起動

$ systemctl restart mysqld.service

RailsAppのdatabase.ymlを編集


default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: 5
  username: root
  password: <%= ENV['MYSQL2_PASSWORD'] %>
  host: localhost

encoding:の部分をutf8mb4に変更する。

データベースの作り直し

私は既存のデータベースの文字コードを変更したので、データベースも今一度作り直す必要があった。


$ rails db:drop
$ rails db:create
$ rails db:migrate

当然ではあるが、格納していたデータはすべて消える。マイグレーションファイルは残っているためrails db:migrateすればモデルは直ぐに作り直せる。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0