Ruby on Rails의 DB를 MySQL로 바꾸어 보았습니다.

안녕하세요! 모리타 켄타로입니다!
이번에는 Ruby on Rails의 DB를 기본 SQLite에서 MySQL로 변경하는 방법을 소개합니다.

처음부터 MySQL의 DB를 사용한다고 결정해 앱을 만드는 경우는, ↓의 기사를 참고로 해 보세요.
  • AWS Cloud9에서 Ruby on Rails를 움직여 보았습니다 (MySQL 편)

  • 어쨌든 해보자!



    하는 것은 두 가지입니다.
  • 데이터베이스 정의 파일 (config/database.yml)을 다시 씁니다.
  • MySQL 설치

  • 그렇다면 config/database.yml를 즉시 편집하십시오.
    # 編集前
    default: &default
      adapter: sqlite3
      pool: 5
      timeout: 5000
    
    development:
      <<: *default
      database: db/development.sqlite3
    
    # 編集後
    default: &default
      adapter: mysql2
      encoding: utf8
      pool: 5
      username: root
      password:
      host: localhost
    
    development:
      <<: *default
      database: development
    

    그리고 MySQL을 설치하기 위해 GemFile을 편집합니다.
    # 編集前
    # Use sqlite3 as the database for Active Record
    gem 'sqlite3'
    
    # 編集後
    # Use mysql2 as the database for Active Record
    gem 'mysql2'
    

    그런 다음 bundle install 에서 MySQL을 설치합니다.
    뭔가 에러가 나오면 이쪽 기사 를 참고해 보세요.
    $ bundle install
    The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
    Fetching gem metadata from https://rubygems.org/............
    
    # 省略
    
    Bundle complete! 15 Gemfile dependencies, 62 gems now installed.
    Use `bundle info [gemname]` to see where a bundled gem is installed.
    

    잘 설치할 수 있었습니다.
    그럼 어플을 기동해…라는 것은 좀 더 참아, 그 전에 MySQL의 서비스를 기동하지 않으면 안 되는 것 같습니다.
    그렇지 않으면, 「Mysql2::Error
    그렇다면 sudo service mysqld start 명령으로 MySQL 서비스를 시작합니다.
    ※ 이것도 sudo 붙이지 않으면 「Permission denied」라고 화났다…
    $ sudo service mysqld start                                         
    Initializing MySQL database:  Installing MySQL system tables...
    
    # 省略
    
    Please report any problems at http://bugs.mysql.com/
    
                                                               [  OK  ]
    Starting mysqld:                                           [  OK  ]
    

    서비스가 시작되면 이번에는 DB를 만듭니다.
    DB를 만들지 않고 앱을 시작해도 "ActiveRecord::NoDatabaseError Unknown database 'development'"라는 화를 낼 뿐입니다.rails db:create 명령으로 config/database.yml에 쓰여진 내용으로 DB가 만들어집니다.
    $ rails db:create
    Created database 'development'
    

    그리고 드디어 앱을 시작합니다.
    $ rails server                                                                                                                                                         
    => Booting Puma
    => Rails 5.0.7.2 application starting in development on http://localhost:8080
    => Run `rails server -h` for more startup options
    Puma starting in single mode...
    * Version 3.12.4 (ruby 2.6.3-p62), codename: Llamas in Pajamas
    * Min threads: 5, max threads: 5
    * Environment: development
    * Listening on tcp://localhost:8080
    Use Ctrl-C to stop
    


    할 수 있었던 것 같습니다!
    그럼~

    좋은 웹페이지 즐겨찾기