SQLite 대신 MySQL을 사용하여 새로운 Ruby on Rails 애플리케이션 만들기


130

MySQL을 사용하여 Rails 애플리케이션을 만들고 싶습니다. 기본 SQLite 대신 최신 Rails 버전에서 어떻게 할 수 있습니까?

답변:


140

rails 프로젝트가 이미있는 경우 config/database.yml파일 에서 어댑터를 변경하고 mysql유효한 사용자 이름 및 비밀번호를 지정하고 선택적으로 소켓을 지정하십시오.

development:
  adapter: mysql2
  database: db_name_dev
  username: koploper
  password:
  host: localhost
  socket: /tmp/mysql.sock

다음으로 mysql2 또는 activerecord-jdbcmysql-adapter (jruby를 사용하는 경우)를 포함하도록 Gemfile을 편집하십시오.


2
도움이됩니다. 다른 답변은 생성기를 사용하기 때문에. 이 답변은 MySQL이 이미 생성 된 후 기존 (예 : SQLite) DB를 대체하거나 보조 데이터베이스를 추가하기 위해 앱에 MySQL을 추가하는 데 효과적입니다. 또한 mysql2는 요즘 Rails에서 가장 중요한 보석으로 보입니다.
rcd

13
Gemfile도 업데이트해야합니다. 제거 gem 'sqlite3'및 추가gem 'mysql2'
RGB

262

일반적으로 다음을 사용하여 새 Rails 앱을 만듭니다.

rails ProjectName

MySQL을 사용하려면

rails new ProjectName -d mysql

56

Rails 3의 경우이 명령을 사용하여 mysql을 사용하여 새 프로젝트를 만들 수 있습니다.

$ rails new projectname -d mysql

24

터미널로 가서 다음을 작성하십시오.

rails new <project_name> -d mysql

22

아직 앱을 만들지 않았다면 cmd (Windows의 경우) 또는 terminal (linux / unix의 경우)으로 이동하여 다음 명령을 입력하여 mysql 데이터베이스로 레일스 응용 프로그램을 만듭니다.

$rails new <your_app_name> -d mysql

Rails 버전 3 이상의 모든 항목에서 작동합니다. 이미 앱을 만든 경우 다음 두 가지 중 하나를 수행 할 수 있습니다.

  1. mysql 데이터베이스 로 another_name 앱을 만들고 cd another_name / config / 로 이동 하여이 새 앱에서 database.yml 파일을 복사하십시오. your_app_name 앱 의 database.yml에 붙여 넣습니다 . 그러나 데이터베이스 이름을 변경하고 데이터베이스의 사용자 이름 / 암호를 적절히 설정 한 후 database.yml 파일에서 설정하십시오.

또는

  1. cd your_app_name / config /로 이동하여 database.yml을여 십시오. 다음과 같이 이름을 바꾸십시오.

개발 :
어댑터 : mysql2
데이터베이스 : db_name_name
사용자 이름 : 루트
비밀번호 :
호스트 : localhost
소켓 : /tmp/mysql.sock

또한 Gemfile에서 gem 'sqlite3'을 제거하고 gem 'mysql2'를 추가하십시오.


13

레일 3 이상 버전을 사용하는 경우

rails new your_project_name -d mysql

이전 버전이 있다면

rails new -d mysql your_project_name

따라서 프로젝트를 만들기 전에 rails 버전을 찾아야합니다. 당신이 찾을 수있는

rails -v


11
rails new <project_name> -d mysql

또는

rails new projectname

config / database.yml의 변경 사항

development:
  adapter: mysql2
  database: db_name_name
  username: root
  password:
  host: localhost
  socket: /tmp/mysql.sock


9
$ rails --help 

항상 가장 친한 친구 야

용법:

$ rails new APP_PATH[options]

또한 응용 프로그램 이름 뒤에 옵션을 제공해야합니다.

레일과 MySQL

$ rails new project_name -d mysql

레일과 postgresql

$ rails new project_name -d postgresql

8

설명서 폴더없이 두 개의 앱과 mysql을 생성하므로 -d 대신 -D 스위치를 사용해야합니다.

  rails -D mysql project_name  (less than version 3)

  rails new project_name -D mysql (version 3 and up)

또는 --database옵션을 사용하십시오 .



6

Rails 3에서 할 수있는 일

$rails new projectname --database=mysql

6

새로운 rails 애플리케이션을 생성하는 경우 -d 스위치를 사용하여 다음과 같이 데이터베이스를 설정할 수 있습니다.

rails -d mysql myapp

그래도 나중에 데이터베이스를 쉽게 전환 할 수 있으며 Mac에서 개발하는 경우 sqlite를 사용하는 것이 더 쉽습니다.


3

새로운 프로젝트에서 쉬운 peasy :

rails new your_new_project_name -d mysql

기존 프로젝트에서는 확실히 까다 롭습니다. 이로 인해 기존 철도 프로젝트에서 많은 문제가 발생했습니다. 이런 종류의 나와 함께 작동합니다 :

# On Gemfile:
gem 'mysql2',  '>= 0.3.18', '< 0.5' # copied from a new project for rails 5.1 :)
gem 'activerecord-mysql-adapter' # needed for mysql..

# On Dockerfile or on CLI:
sudo apt-get install -y  mysql-client libmysqlclient-dev 

2

먼저 mysql gem이 설치되어 있는지 확인하십시오. 콘솔에서 다음 명령을 입력하는 것보다

gem install mysql2

콘솔에 다음 명령을 입력하여 새 Rails 앱을 만들고 mysql 데이터베이스를 기본 데이터베이스로 설정하는 것보다

rails new app-name -d mysql

1
대신 gem을 Gemfile에 추가하려고합니다.
리카르도

0

다음 명령을 사용하여 mysql 데이터베이스로 API에 대한 새 앱을 작성하십시오.

rails new <appname> --api -d mysql


  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock

0

database.yml

# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  host: localhost
  database: database_name
  username: username
  password: secret

development:
  <<: *default

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default

젬 파일 :

# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'

0

우분투 또는 데비안 배포판을 사용하는 경우 터미널에서 MySQL 드라이버를 실행하지 않으면 먼저 MySQL 드라이버가 시스템에 있는지 확인해야합니다

sudo apt-get install mysql-client libmysqlclient-dev

이것을 Gemfile에 추가하십시오

gem 'mysql2', '~> 0.3.16'

그런 다음 프로젝트의 루트 디렉토리에서 실행하십시오.

bundle install

그 후 mysql 구성을 이전 답변으로 config / database.yml에 추가 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.