44320


タイトル通りなのですが、デプロイしたアプリをブラウザ上からデータを登録する際に日本語の入力ができなってWe're sorry, but something
went wrong.のエラーページになってしまいます。英語ですと普通に登録ができます。

やったことはaws(EC2)でRDSのパラメーターグループの確認とターミナルで直接mysqlに接続して確認し訂正しました。

↓ターミナルでmysql接続した際の画面

[code]

    | 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       | /rdsdbbin/mysql-5.6.39.R1/share/charsets/ 
    |
    
[/code]

database.yml

[code]

    default: &default
      adapter: mysql2
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      username: root
      password: 11223344
      database: portfolio_production
      encoding: utf8
    
    development:
      <<: *default
      database: portfolio_production
    
    test:
      <<: *default
      database: portfolio_production
    
    production:
      <<: *default
      adapter: mysql2
      encoding: utf8
      database: portfolio_production
      username: root
      password: 11223344
      host: portfolio-mysql.cxputm26p9ho.ap-northeast-1.rds.amazonaws.com
      port: 3306
    
[/code]

↓日本語入力した際のエラーログ

[code]

         D, [2018-05-25T07:06:01.042200 #3172] DEBUG -- : [40b88ae2-9446- 
    4191-95e7-a1cdb3c3ca04]   SQL (3.0ms)  INSERT INTO `categories` 
    (`c_name`, `created_at`, `updated_at`) VALUES ('あ', '2018-05-25 
    07:06:01', '2018-05-25 07:06:01')
    D, [2018-05-25T07:06:01.045021 #3172] DEBUG -- : [40b88ae2-9446-4191- 
    95e7-a1cdb3c3ca04]    (2.7ms)  ROLLBACK
    I, [2018-05-25T07:06:01.045197 #3172]  INFO -- : [40b88ae2-9446-4191- 
    95e7-a1cdb3c3ca04] Completed 500 Internal Server Error in 18ms 
    (ActiveRecord: 12.5ms)
    F, [2018-05-25T07:06:01.046044 #3172] FATAL -- : [40b88ae2-9446-4191- 
    95e7-a1cdb3c3ca04]   
    F, [2018-05-25T07:06:01.046087 #3172] FATAL -- : [40b88ae2-9446-4191- 
    95e7-a1cdb3c3ca04] ActiveRecord::StatementInvalid (Mysql2::Error: 
    Incorrect string value: '\xE3\x81\x82' for column 'c_name' at row 1: 
    INSERT INTO `categories` (`c_name`, `created_at`, `updated_at`) VALUES 
    ('あ', '2018-05-25 07:06:01', '2018-05-25 07:06:01')):
    F, [2018-05-25T07:06:01.046139 #3172] FATAL -- : [40b88ae2-9446-4191- 
    95e7-a1cdb3c3ca04]   
    F, [2018-05-25T07:06:01.046161 #3172] FATAL -- : [40b88ae2-9446-4191- 
    95e7-a1cdb3c3ca04] app/controllers/categories_controller.rb:19:in 
    `block in create'
    [40b88ae2-9446-4191-95e7-a1cdb3c3ca04] 
    app/controllers/categories_controller.rb:18:in `create'   
    
[/code]

schema

[code]

    +------------+--------------+------+-----+---------+----------------+
    | Field      | Type         | Null | Key | Default | Extra          |
    +------------+--------------+------+-----+---------+----------------+
    | id         | bigint(20)   | NO   | PRI | NULL    | auto_increment |
    | c_name     | varchar(255) | YES  |     | NULL    |                |
    | created_at | datetime     | NO   |     | NULL    |                |
    | updated_at | datetime     | NO   |     | NULL    |                |
    +------------+--------------+------+-----+---------+----------------+
    
[/code]

以上なのですが他にどうしたらよいのかわからず困っています。もし何かお気付きのところなどございましたら教えていただきたいです。宜しくお願いしますm(._.)m


CC BY-SA 4.0
2018-05-25T06:52:48.390
44251
2018-05-28T06:10:41.317
2018-05-28T05:59:06.867
27359
27359
question
ruby-on-rails ruby aws デプロイ
デプロイしたアプリで日本語が使えないエラー


自己解決できました！！  
おかしな点が見つからなかったのですが、エラーログからDB関連なのかな？と思い色々調べていたらDB全体ではなくて、テーブル指定して文字設定できるみたいなので使っているテーブル全てにutf8を当てまして、インスタンス再起動したらうまくいきました！

ターミナルでmysqlに接続してmysqlのコマンド以下入力です。

ALTER TABLE テーブル名 CONVERT TO CHARACTER SET UTF8；

大文字じゃないといけないのかはわかりませんが、テーブル名のところは自分のテーブル名通り小文字で入力しました。

以上です。ありがとうございましたm(._.)m


CC BY-SA 4.0
2018-05-28T06:10:41.317
44320
2018-05-28T06:10:41.317
27359
44251
answer