Capistrano3でRailsアプリをデプロイしている最中です。
開発中にはなにも問題がでなかったのですが、デプロイ実行中に「bundle exec rake db:migrate」を実行していますが
Mysql2::Error: Invalid default value for 'member_type': CREATE TABLE customers
というエラーが出てデプロイが止まってしまいます。
customersテーブルのmember_typeカラムのデフォルト値のところのエラーなのでしょうが、何が悪くてエラーとなってしまったのかわかりません。マイグレーションファイルの中身は以下のようになっています。
20170817225634_create_customers.rb class CreateCustomers < ActiveRecord::Migration[5.1] def change create_table :customers do |t| t.string :email, null: false # メールアドレス t.string :email_for_index, null: false # 索引用メールアドレス t.string :family_name, null: false # 姓 t.string :given_name, null: false # 名 t.string :family_name_kana, null: false # 姓(カナ) t.string :given_name_kana, null: false # 名(カナ) t.string :nickname, null: false # ニックネーム t.string :gender # 性別 t.date :birthday # 誕生日 t.string :hashed_password # パスワード t.string :sponsor1, null: false, default: "sss" # 友人 t.string :member_type, null: false, default: "一般" # ここでエラー発生 t.string :lock, null: false, default: "0" t.string :bonus_lock, null: false, default: "0" t.string :special_lock, null: false, default: "0" t.integer :new_register, null: false, default: 0 t.timestamps end add_index :customers, :email_for_index, unique: true add_index :customers, :nickname, unique: true add_index :customers, [ :family_name_kana, :given_name_kana ] add_index :customers, :sponsor1 add_index :customers, :member_type add_index :customers, :new_register end end
開発中は何も問題はなかったのですが、何がいけないのでしょうか?
どなたかご教示お願いいたします。
追記(エンコードを調べてみました。)
仮想マシン側 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
VPS側(変更前) +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+ 変更後 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
vim /etc/my.cnf.d/server.cnfを開いて[mysqld]の下にcharacter-set-server = utf8mb4を追記して
character_set_databaseとcharacter_set_serverは変更することができました。
しかしcharacter_set_clientとcharacter_set_connectionの変更ができていません。
vim /etc/my.cnf.d/server.cnfを開くと
# # These groups are read by MariaDB server. # Use it for options that only the server (but not clients) should see # # See the examples of server my.cnf files in /usr/share/mysql/ # # this is read by the standalone daemon and embedded servers [server] # this is only for the mysqld standalone daemon [mysqld] character-set-server = utf8mb4 # this is only for embedded server [embedded] # This group is only read by MariaDB-5.5 servers. # If you use the same .cnf file for MariaDB of different versions, # use this group for options that older servers don't understand [mysqld-5.5] # These two groups are only read by MariaDB servers, not by MySQL. # If you use the same .cnf file for MySQL and MariaDB, # you can put MariaDB-only options here [mariadb] [mariadb-5.5]
と表示されます。
上のファイルのどこにエンコード変更の記述をすればcharacter_set_clientとcharacter_set_connectionの
エンコードを変更することができるのでしょうか?
回答1件
あなたの回答
tips
プレビュー