質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

1回答

3199閲覧

Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON column 'introduction' can't have a default value:

KEI_newdesign

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2020/11/02 03:55

前提・実現したいこと

MySQLのエラーを解消する方法です。長々と書いてしまいますが、ぜひお力を貸していただければと思います。

発生している問題・エラーメッセージ

AWSのEC2を使いデプロイを試みていますが、MySQLのエラーでつまづいています。データベースはRDSを使っています。
エラー内容は下記の通りで、「Intorductionというカラムはデフォルト値を持てないという」内容です。
データ型がtextだと、default値を持てないという認識です。

intorductionのデータ型をtext、defaultを""にしていたところエラーが出たため、
データ型をstringに変更しました。schema.rbも下記のように変更されています。

create_table "users", force: :cascade do |t| t.string "name", null: false t.string "introduction" t.string "profile_image_id" t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "email" t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
[ec2-user@ip-172-31-46-48 bookers2]$ bundle exec rails db:migrate RAILS_ENV=production == 20201023062453 DeviseCreateUsers: migrating ================================ -- create_table(:users) rails aborted! StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON column 'introduction' can't have a default value: CREATE TABLE `users` (`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) DEFAULT '' NOT NULL, `introduction` text DEFAULT '' NOT NULL, `profile_image_id` varchar(255), `encrypted_password` varchar(255) DEFAULT '' NOT NULL, `reset_password_token` varchar(255), `reset_password_sent_at` datetime, `remember_created_at` datetime, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:187:in `block (2 levels) in execute' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:186:in `block in execute' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/notifications/instrumenter.rb:23:in `instrument' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:185:in `execute' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/mysql/database_statements.rb:28:in `execute' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:311:in `create_table' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:871:in `block in method_missing' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:840:in `block in say_with_time' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:840:in `say_with_time' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:860:in `method_missing' /home/ec2-user/bookers2/db/migrate/20201023062453_devise_create_users.rb:5:in `change' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:814:in `exec_migration' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:798:in `block (2 levels) in migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1292:in `block in execute_migration_in_transaction' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1345:in `ddl_transaction' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1263:in `block in migrate_without_lock' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <main>' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/railties-5.2.4.4/lib/rails/commands/rake/rake_command.rb:23:in `block in perform' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/railties-5.2.4.4/lib/rails/commands/rake/rake_command.rb:20:in `perform' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/railties-5.2.4.4/lib/rails/command.rb:48:in `invoke' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/railties-5.2.4.4/lib/rails/commands.rb:18:in `<main>' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies.rb:291:in `block in require' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies.rb:257:in `load_dependency' /home/ec2-user/bookers2/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies.rb:291:in `require' bin/rails:9:in `<main>'

試したこと

bundle exec rails db:migrate RAILS_ENV=productionを試みましたが、上記エラーが出てしまいます。

自分の考え

データ型を変えたのにエラーが出るということは、schema.rbの情報を読み込めていない??

補足情報(FW/ツールのバージョンなど)

Rails:Rails 5.2.4.4
Ruby:ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
MySQL:5.7.22
EC2
RDS

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/11/02 04:25

> データ型をstringに変更しました。 どのような方法で変更を行いましたか?
KEI_newdesign

2020/11/02 04:32

maisumakun様 ご回答ありがとうございます!! 以下のようにマイグレーションファイルを作成し、rails db:migrateで実行しました。 ①データ型を変更 class ChangeUserIntroduction < ActiveRecord::Migration[5.2] def up change_column :users, :introduction, :string,default: nil, null: true end def down change_column :users, :introduction, :text, default: nil, null: true end end ②introductionカラムはnull:falseである必要があると思い、下記にて再度修正しました。 class ChangeUserTableNullFalse < ActiveRecord::Migration[5.2] def up change_column :users, :introduction, :string,default: nil, null: false end def down change_column :users, :introduction, :string,default: nil, null: true end end マイグレーションの知識が浅いため、間違いがあるかもしれません。ぜひご指摘いただければと思います。
guest

回答1

0

どうも辻褄が合わない所があります。
それを解きほぐさないと解に繋がりそうに無いです。
が、
その前に
「schema.rbの情報を読み込めていない??」ここにも誤解が有るようです。
schema.rb は migrationの時に読み込まれるものではなく、migrationの結果書き出されるものです。
初めに「schema.rbも下記のように変更されています。」とあったのでstringへの変更は成功したのかな、と思いきや上の記述で??。「変更」したのがRailsなのかあなたなのかわからなくなりました。それでmaisumakunさんがあの質問をしたわけです。
で、らしき手順なのですが、内容にも??
default: nil, null: false これは「nullは許さないが、defaultはnull」はて、、、

ということで疑いは、「らしきmigrationの手順は踏もうとしているが、踏まれて居ないのでは?」そもそも「DeviseCreateUsers」で失敗しいるのに、ChangeUserTableがなりたすはずがない。
まずその確認をしたいので rails db:migrate:status の結果を載せてください

投稿2020/11/03 06:09

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問