今日もRailsで発生した問題の対処方法とTipsです。
Railsで他テーブルに紐づいたデータをSeedファイルに記載する方法
ポートフォリオのためにpostテーブルに投稿データを初期データとして登録しておきたい場合、postテーブルにはuserが必用です。
seedファイルもrubyのコードを記述することができます。
という前提に立つと、userが作成されている場合は
user1 = User.find(1) Post.create(user: user1, title: "タイトル", body: "本文")
と記述すればuser1に紐づいた投稿データを登録することができます。
もちろんRubyのコードなのでif文で分岐することも可能です。
user1 = nil if User.find_by(id: 1) == nil user1 = User.create(email: "test@example.com", password: "password") else user1 = User.find(1) end Post.create(user: user1, title: "タイトル", body: "本文")
AWSでMigrate時にMysql2::Error: Specified key was too long; max key length is 767 bytesが出た場合の対処方法
AWSでRDSのmysqlにmigrateするときにこのエラーが発生した場合の対処方法になります。
対処方法としてはparameter groupの設定値が間違っている可能性が高いです。
これはstring型のサイズ制限を大きくする設定がされていないために発生しています。
下記の設定があっているか確認しましょう。特にinnodb_large_prefixが1になっていないことが原因と考えられます。
character_set_client |
character-set-client-handshake |
character_set_connection |
character_set_database |
character_set_filesystem |
character_set_results |
character_set_server |
skip-character-set-client-handshake |
innodb_file_format |
innodb_file_per_table |
innodb_large_prefix |
またinnodb_large_prefixが1の場合、character_setはutf8mb4である必用があります。
コメント