【Ruby on Rails】データベースをSQLliteからMySQLに切り替える方法

Ruby on Rails

はじめに

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アプリケーションのデータベースに対する理解が深まると同時に、移行作業に必要な知識も身につくと思います。

タイトルとURLをコピーしました