はじめに
Railsアプリケーションのデータベース(以下DB)を開発途中でSQLliteからMySQLに変更したいと思ったことはありませんか?
環境を作成するときに最初からMySQLにする方法もありますが、今回はSQLliteで作成してからの切り替え方法をまとめました。
環境
- Windows 11
- Ruby 3.3.0
- Rails 7.1.3.2
- MySQL Ver 8.0.38
前提として、Bundlerのインストール及びGemfileの作成が完了している状態を想定しています。
手順
Gemfileにgem 'mysql2'
を追記します。
configディレクトリにあるdatabase.ymlを以下に書き換えます。
development:
adapter: mysql2
encoding: utf8
database: development
pool: 5
username: root
password: ※MySQLがインストールされていなかった場合インストール時に設定したPWをここに記載
socket: /tmp/mysql.sock
インストールを行います。
bundle install
※私の環境ではこの段階で以下のエラーが出ました。
An error occurred while installing mysql2 (0.5.6), and Bundler cannot continue.
エラーの内容は、ローカル環境にMySQLがないとのこと。
MySQLのインストールについては後述(MySQLをインストール)を参考にしてください。
MySQLのインストールが完了したらRailsに戻ります。
Railsでmysql2 gemをインストールします。
gem install mysql2 -- --with-mysql-dir="C:/Program Files/MySQL/MySQL Server 8.0"
※”C:/Program Files/MySQL/MySQL Server 8.0
“はMySQL Serverがあるフォルダを指定してください。
再度gemをインストールします。
bundle install
新規でDBを作成します。
bundle exec rake db:create
※必要であればここでマイグレーションファイルを作成してください。
マイグレートします。
bundle exec rake db:migrate
以上です。
MySQLをインストール
MySQLの公式ダウンロードページにアクセスします。
https://dev.mysql.com/downloads/installer/
ダウンロードしたインストーラーを実行します。
基本的にデフォルトの状態で「Execute」や「Next」を押下していきます。
「Accounts and Roles」ではrootアカウント用のパスワードを入力します。
「Connect To Server」で先ほど設定したPasswordを入力し「Check」を押下します。
「Connection succeeded」になれば「Next」を押下します。

※インストールが完了したときに立ち上がったアプリケーションは閉じて問題ありません。
Pathの設定
MySQLが正しく認識されるようにPathを設定します。
Windows+Rを押下し、「sysdm.cpl」を入力して、「OK」を押下します。
「環境設定」タブにある「環境変数」を押下します。
下段のシステム環境変数にある「Path」を選択し、「編集」を押下します。

「新規」からMySQLが保存されているフォルダへのパスを記載し「OK」を押下します。

これでPath設定は完了です。
さいごに
今回の記事では、RailsアプリケーションのデータベースをSQLliteからMySQLに切り替える手順を紹介しました。データベースの選択は、プロジェクトの規模や要件によって重要になってきます。
実際に切り替えを行うことで、Railsアプリケーションのデータベースに対する理解が深まると同時に、移行作業に必要な知識も身につくと思います。