[RAILS] [MySQL] Der mit Docker erstellte Datenbankserver unterstützt möglicherweise kein Japanisch ...

Umgebung

python


$ 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

Wenn ich versuche, einen Benutzernamen auf Japanisch in der Datenbank zu registrieren, ...

Fehlerinhalt


ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xE3\x83\x8F\xE3\x83\xAA...' for column 'name' at row 1):

Oh, es scheint, dass es nicht als japanisch anerkannt wird Möchten Sie die Einstellungen anhand des Zeichensatzes der Datenbank überprüfen?

python


$ 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 Soweit ich sehen kann, ist es das Standard-Charaset von MySQL und unterstützt kein Japanisch.

Stellen Sie sicher, dass der MySQL-Datenbankserver Japanisch unterstützt

docker-compose.yml


command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

python


$ docker-compose down

$ docker-compose up -d --build

Datenbank neu erstellen

database.yml


default: &default
  charset: utf8mb4   #Nachtrag
  encoding: utf8mb4  

python


$ docker-compose exec back sh
> rake db:drop

> rake db:create
> rails db:migrate

Jetzt haben Sie eine japanische Datenbank!

Recommended Posts

[MySQL] Der mit Docker erstellte Datenbankserver unterstützt möglicherweise kein Japanisch ...
Mit Docker erstellte Webanwendung (1)
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Lesen Sie die Dump-Datei mit MySQL von Docker
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Aktualisieren Sie MySQL mit Docker von 5.7 auf 8.0
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
So interagieren Sie mit einem Server, der die App nicht zum Absturz bringt
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...