環境
$ docker -v
Docker version 19.03.12
$ rails -v
Rails 6.0.3.2
$ mysql --version
mysql  Ver 14.14 Distrib 5.7.29, for osx10.15 (x86_64) using  EditLine wrapper
データベースに日本語でユーザー名を登録しようとすると、、、、
エラー内容
ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xE3\x83\x8F\xE3\x83\xAA...' for column 'name' at row 1):
あらら、日本語として認識されてない模様
ここは、データベースのcharasetでも見て設定確認しますか。
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
f51c4b953b05        feeder-in_back      "rails server -b 0.0…"   About an hour ago   Up About an hour    0.0.0.0:3000->3000/tcp              back
925b28f3b58d        mysql:5.7           "docker-entrypoint.s…"   About an hour ago   Up About an hour    33060/tcp, 0.0.0.0:3308->3306/tcp   database
ab6efeba59a1        feeder-in_web       "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:8080->3000/tcp              web
$ docker exec -it 925b28f3b58d mysql -u root -p
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)
character_set_database   | latin1
これを見る限り、MySQLのデフォルトのcharasetになっており、日本語対応になっていない。
MySQLデータベースサーバを日本語対応にする
docker-compose.yml
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
$ docker-compose down
$ docker-compose up -d --build
データベースの再構築
database.yml
default: &default
  charset: utf8mb4   #追記
  encoding: utf8mb4  
$ docker-compose exec back sh
> rake db:drop
> rake db:create
> rails db:migrate
これで日本語対応のデータベースになった!