Help us understand the problem. What is going on with this article?

EC2で作成したrailsサーバーでRDSを使う方法

More than 5 years have passed since last update.

EC2上に構築したrailsサーバーからMYSQLのアプリを作ってRDSに接続する方法

[前提条件]
EC2上にrailsサーバーが構築されている。
RDSのインスタンスを確保している。

gem mysqlのインストール

yumでライブラリを取得した後にgemのオプションで指定する必要がある。

sudo yum -y install libmysqld-dev
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config

mysqlを使ったrailsアプリ作成

rails new myapp3 -d mysql

JavaScriptを有効にする

後で使うスカフォードを有効にするため。

cd myapp
vi Gemfile
gem 'therubyracer', :platforms => :rubyをコメントイン
bundle install

接続設定の変更

database.ymlを接続設定の部分を以下のように書き換える。

vi config/database.yml
config/database.yml
development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: XXXXX
  pool: 5
  username: XXXXX
  password: XXXXX
  socket: /var/lib/mysql/mysql.sock
  host: XXX.XXXXXXXX.us-west-2.rds.amazonaws.com

スカフォードを使ってアプリを作る

rails generate scaffold cat name:string point:string
rake db:create
rake db:migrate

これでRDS側で確認するとテーブルができていれば設定完了。

補足

このままだと日本語が正しく入力できないのでRDStoolkitを使って文字コードをutf8に変更する。
RDSに割り当てたパラメーターグループの設定を変更する。
defaultを割り当てた場合は変更ができないのでインスタンスを作り直す必要がある。

rds-modify-db-parameter-group  パラメーターグループ名 -p "name=character_set_database, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group  パラメーターグループ名 -p "name=character_set_client, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group  パラメーターグループ名 -p "name=character_set_connection, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group  パラメーターグループ名 -p "name=character_set_results, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group  パラメーターグループ名 -p "name=character_set_server, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group  パラメーターグループ名 -p "name=skip-character-set-client-handshake, value=TRUE, method=pending-reboot" --region us-west-2

※us-west-2はリージョン

character_set_databaseの項目だけは変更できなかったので以下のコマンドのみmysql上で実行する。

SET character_set_database = 'utf8'

このあとデフォルトで作成されたデータベースをいったん削除して作り直す。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away