Capistrano3でRailsアプリをデプロイしている最中です。
開発中にはなにも問題がなかったのですが、デプロイ実行中に「bundle exec rake db:migrate」を実行していて
Mysql2::Error: Invalid default value for 'member_type': CREATE TABLE customers
というエラーが出てデプロイが止まってしまいます。
customersテーブルのmember_typeカラムのデフォルト値を日本語で記述していました。
t.string :member_type, null: false, default: '一般'
そこでMariaDBのエンコードの問題と思いエンコードを以下のように変更しました。
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/ | +--------------------------+----------------------------+ VPS側変更後 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
デプロイ元の仮想マシン側は以下のようになっています。
仮想マシン側 +--------------------------+----------------------------+ | 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/ | +--------------------------+----------------------------+
エンコードを変更しデプロイしてもエラーは解消されませんでした。
そこで前回の質問でご教示いただいたとおり以下のようにデフォルト値を変えてみました。
t.string :member_type, null: false, default: 'normal'
するとこのテーブルでのエラーは発生しませんでしたが、ほかのテーブルで日本語のデフォルト値の部分で同じエラーが出てしまいます。
default値が日本語だとエラーが出て、英語だとエラーが出ないということはエンコードの問題と思いますが
対応策がわからないのでご教示のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/24 16:40