mysqlの文字コードがlatin1となっているので、utf8mb4に変更しようとしましたが、
どうもうまくいきません。
AWSのEC2インスタンスをssh接続で使用しています。
確認したところ、
$sudo mysql
ではuft8mb4になっており、
$rails dbconsole
だとlatin1になっているので、問題はRails側にあるようです。
色々調べた所RailsでDB作成時の文字コードになるのが原因なようです。
そこで改善策を見た所、DBを削除して作り直す方法と下記のようにoptionを
つけてmigrateする方法しかわかりませんでした。
これだと毎回optionをつける必要性があるため
どうにか設定変更して今後もutf8mb4として使えるようにできないでしょうか?
ruby
1def change 2 create_table :personal_log_merges, options:"DEFAULT CHARSET=utf8mb4" do |t|
ruby
1mysql> show variables like 'char%'; 2+--------------------------+----------------------------+ 3| Variable_name | Value | 4+--------------------------+----------------------------+ 5| character_set_client | utf8mb4 | 6| character_set_connection | utf8mb4 | 7| character_set_database | latin1 | 8| character_set_filesystem | binary | 9| character_set_results | utf8mb4 | 10| character_set_server | utf8mb4 | 11| character_set_system | utf8 | 12| character_sets_dir | /usr/share/mysql/charsets/ | 13+--------------------------+----------------------------+ 14 15 16$ sudo vi /etc/my.cnf 17[mysqld] 18datadir=/var/lib/mysql 19socket=/var/lib/mysql/mysql.sock 20# Disabling symbolic-links is recommended to prevent assorted security risks 21symbolic-links=0 22default-time-zone = 'Asia/Tokyo' 23character-set-server = utf8mb4 24# Settings user and group are ignored when systemd is used. 25# If you need to run mysqld under a different user or group, 26# customize your systemd unit file for mysqld according to the 27# instructions in http://fedoraproject.org/wiki/Systemd 28 29[client] 30socket=/var/lib/mysql/mysql.sock 31default-character-set = utf8 32 33[mysqld_safe] 34log-error=/var/log/mysqld.log 35pid-file=/var/run/mysqld/mysqld.pid 36 37#Rails DBの設定 38#config/database.yml 39default: &default 40 adapter: mysql2 41 encoding: utf8mb4 42 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 43 username: ユーザー名 44 password: 45 socket: /var/lib/mysql/mysql.sock 46
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/27 05:53