前提・実現したいこと
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
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー