質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1650閲覧

Mysql2::Error: Incorrect string value: '\xE3\x81\x82' for column 'name' at row 1

a-ichi

総合スコア16

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2021/01/25 13:26

編集2021/01/26 01:51

前提・実現したいこと

localhostでサーバーに繋ぎ、web上でデータの入力→保存をしようとすると、
Mysql2::Error: Incorrect string value: '\xE3\x81\x82' for column 'name' at row 1のエラーが出るのを解消したい。

英字のみでしたら登録出来ますが、日本語の登録が出来ません。

発生している問題・エラーメッセージ

Mysql2::Error: Incorrect string value: '\xE3\x81\x82' for column 'name' at row 1

イメージ説明

該当のソースコード

docker-compoose.yml

yml

1version: '3' 2 3services: 4 db: 5 image: mysql:5.7 6 volumes: 7 - mysql-data:/var/lib/mysql 8 command: --character-set-server=utf8 --collation-server=utf8_unicode_ci --socket=/tmp/mysql.sock 9 ports: 10 - "4306:3306" 11 environment: 12 MYSQL_ROOT_PASSWORD: password 13 MYSQL_DATABASE: root 14 tty: true 15 stdin_open: true 16 17 app: 18 build: . 19 command: bundle exec puma -C config/puma.rb 20 volumes: 21 - .:/CustomerCalender 22 - public-data:/CustomerCalender/public 23 - tmp-data:/CustomerCalender/tmp 24 - log-data:/CustomerCalender/log 25 tty: true 26 stdin_open: true 27 depends_on: 28 - db 29 links: 30 - db 31 web: 32 build: 33 context: containers/nginx 34 ports: 35 - 8080:80 36 volumes: 37 - public-data:/CustomerCalender/public 38 - tmp-data:/CustomerCalender/tmp 39 tty: true 40 stdin_open: true 41 depends_on: 42 - db 43 links: 44 - db 45volumes: 46 mysql-data: 47 public-data: 48 tmp-data: 49 log-data:

dockerfile

1FROM ruby:2.6.5 2 3RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ 4 && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list 5RUN apt-get update -qq && \ 6 apt-get install -y build-essential \ 7 libpq-dev \ 8 nodejs \ 9 vim \ 10 yarn 11 12RUN mkdir /CustomerCalender 13 14WORKDIR /CustomerCalender 15 16COPY Gemfile /CustomerCalender/Gemfile 17COPY Gemfile.lock /CustomerCalender/Gemfile.lock 18 19ENV BUNDLER_VERSION 2.1.4 20RUN gem install bundler 21RUN bundle install 22RUN yarn install 23 24COPY . /CustomerCalender 25 26RUN mkdir -p tmp/sockets 27RUN mkdir -p tmp/pids

database.yml

yml

1default: &default 2 adapter: mysql2 3 encoding: utf8 4 charset: utf8 5 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 6 username: root 7 password: password 8 host: db 9development: 10 <<: *default 11 database: CustomerCalender_development 12test: 13 <<: *default 14 database: CustomerCalender_test 15production: 16 <<: *default 17 host: <%= ENV['DATABASE_HOST'] %> 18 database: <%= ENV['DATABASE_DATABASE'] %> 19 adapter: mysql2 20 encoding: utf8mb4 21 charset: utf8mb4 22 collation: utf8mb4_general_ci 23 username: <%= ENV['DATABASE_USERNAME'] %> 24 password: <%= ENV['DATABASE_PASSWORD'] %>

試したこと

・docker-compose down→up
・docker-compose exec app bash→rails db:create rails db:migrate rails db:seed
・docker-compose exec app bash→ mysql -u root
結果→bash: mysql: command not found
・コンテナ外のローカルからmysql -u root→mysql> status
結果→Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
・docker-compose exec app bash→vi /etc/my.cnf
default-character-set=utf8
default-character-set=utf8
default-character-set=utf8
character-set-server=utf8 を追加
・docker-compose.ymlに
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ciを追加

・ローカルから
% vi /usr/local/etc/my.cnf
default-character-set=utf8
default-character-set=utf8
default-character-set=utf8
character-set-server=utf8 を追加

参考記事
https://qiita.com/EigenPort_M/items/46bd1bf386eb56eba97e
https://qiita.com/tomaaaaaaaa/items/08ce75b95df3d310817a
https://ryotarch.com/note/incorrect-string-value-encode-error/

補足情報(FW/ツールのバージョンなど)

rails 6
docker 20.10.2
docker-compose 1.27.4

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/01/25 14:50

my.cnfを編集後にDBのコンテナを立ち上げ直しましたか? よくわからなければdocker-compose downしてからもう一度upしてください。
a-ichi

2021/01/25 15:10

yu_1985様 何度も申し訳ありません。 もう一度down→upしましたが、変わらずでした。
yu_1985

2021/01/25 18:00

立ち上げたMySQLのコンテナにMySQLクライアントで入って show variables like "chara%"; で設定を見るとどうなってますかね。
a-ichi

2021/01/26 00:52

docker-compose exec db bash ↓ mysql -u root ↓ ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) のエラーとなりました。
yu_1985

2021/01/26 03:46

ご自分でパスワードを「password」と設定して立ち上げているのにそれを省略して入れますかね…? エラーの内容がパスワードに関するものでないのが気にはなりますが。あとコンテナで指定しているのは/tmp/mysql.sockですし…。 一旦それは置いといて mysql -u root -p で、パスワードを要求されるはずなので自分で設定したパスワードを入れてみてください。 あと、よくよく考えたらローカルの/usr/local/etc/my.cnfを編集してもコンテナからそのファイルを読んでないのでそこはあまり意味がないですね…。
a-ichi

2021/01/26 04:12

mysql -u root -p でパスワードを入力しても同じエラーでした。 dockerのappコンテナの中に入って /usr/local/etc/my.cnfに default-character-set=utf8 default-character-set=utf8 default-character-set=utf8 character-set-server=utf8 を入力しても変わらずでした。
yu_1985

2021/01/26 04:30

> dockerのappコンテナの中に入って/usr/local/etc/my.cnfに それをしても立ち上げ直したらもとに戻るので意味ないですね…。コンテナのオプションで必要なものは指定しているのでは、と思うのですが。 pumaがどこに接続しているのかが気になりますが、コンテナに入らずに外からmysqlクライアントで接続したらどうなりますか。 docker-composeではホスト側のポートを3306ではなく4306にしていますけど、dartabase,ymlではポートを特に指定していないのできちんと繋げているのかどうか。 hostでコンテナ名を指定しているのでコンテナにつなぎに行ってるとは思いますが…。
a-ichi

2021/01/26 04:39

あれ?どうしてでしょう? ローカルで mysql -u rootを入力しても ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) のエラーになってしまいます。 docker-compose のホスト側のポートは本番環境で接続する際にエラーが出た為、変更したと思います。 3306に戻してみましたが、変わらずでした。
a-ichi

2021/01/26 04:42

mysql.server start を入力すると、 一度は Starting MySQL SUCCESS! となりましたが、 mysql.server restart を再度入力すると ERROR! The server quit without updating PID file (/usr/local/var/mysql/nakajimaeikounoMacBook-Air.local.pid). と振り出しに戻ってしまいました。
a-ichi

2021/01/26 04:54

もう一回クリーンインストールしましたら、 ローカルのエラーは解消されました。 ローカル show variables like "chara%"; +--------------------------+----------------------------------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/Cellar/mysql@5.7/5.7.32/share/mysql/charsets/ こんな感じです。
a-ichi

2021/01/26 04:58

dockerのコンテナの中は相変わらず、 mysql -u rootは ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) のエラーが出ます。 dockerコンテナにクリーンインストールみたいな概念はないですよね?
a-ichi

2021/01/26 05:43

yu_1985様 解決出来ました。 いつもありがとうございます。
guest

回答1

0

自己解決

dockerfileに

ENV LANG C.UTF-8
RUN unlink /etc/localtime &&
ln -s /usr/share/zoneinfo/Japan /etc/localtime
を追加し
コンテナに入り、
rails db:drop
rails db:create
rails db:migrate

で解決しました。

投稿2021/01/26 05:42

a-ichi

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/01/26 06:21

席を外している間に解決したようですね。なぜそれで解決したかはわかりませんが、結局の所テーブルの再作成で解消したということでしょうかね。 ちなみに、毎度回答依頼をいただけるのですが、正直なところ大抵は自分も発生しているエラーメッセージを調べて適当と思われる結果を貼ったり、切り分けのための情報を出してもらったりを繰り返しているだけです。 エラーメッセージをきちんと読むと原因をそのまま書いてくれている、なんてことは結構あります。 質問を投げるのもいいですが、少しずつ自分でそのへんを切り分けてトラブルシュートできるようになるといいですね。
a-ichi

2021/01/26 06:36

yu_1985様 いつもありがとうございます。 yu_1985様のおかげで何とか少しづつ進めてます。 何とかエラーを自分で解決出来るよう少しづつ頑張ろうと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問