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

次に、Gemfileを編集して、mysql2またはactiverecord-jdbcmysql-adapter(jrubyを使用している場合)が含まれていることを確認します。


2
これは役に立ちます。他の答えはジェネレータを使用するだけです。この回答は、既存の(SQLiteなど)DBを置き換えるか、セカンダリデータベースを追加するために、MySQLがすでに作成された後にアプリに追加するのに役立ちます。また、最近ではmysql2がRailsの主役のようです。
rcd 2014年

13
Gemfileも更新する必要があります。削除gem 'sqlite3'して追加gem 'mysql2'
RGB


56

Rails 3の場合、このコマンドを使用して、mysqlを使用して新しいプロジェクトを作成できます。

$ rails new projectname -d mysql

24

ターミナルに行き、次のように書きます:

rails new <project_name> -d mysql

22

アプリをまだ作成していない場合は、cmd(windowsの場合)またはterminal(linux / unixの場合)に移動し、次のコマンドを入力して、mysqlデータベースでRailsアプリケーションを作成します。

$rails new <your_app_name> -d mysql

Railsバージョン3以上で機能します。すでにアプリを作成している場合は、次の2つのいずれかを実行できます。

  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
ユーザー名:root
パスワード:
ホスト:localhost
ソケット:/tmp/mysql.sock

さらに、gem 'sqlite3'をGemfileから削除し、gem 'mysql2'を追加します。


13

Rails 3以降のバージョンを使用している場合

rails new your_project_name -d mysql

以前のバージョンがある場合

rails new -d mysql your_project_name

したがって、プロジェクトを作成する前に、レールのバージョンを確認する必要があります。あなたが見つけることができること

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

-dの代わりにスイッチ-Dを使用する必要があります。ドキュメントフォルダーのない2つのアプリとmysqlが生成されるためです。

  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

新しいプロジェクトでは、簡単にできます:

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
代わりにGemfileにgemを追加する必要があります。
リカルド

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

Gemfile

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

0

UbuntuまたはDebianディストリビューションを使用している場合、端末でこれを実行しない場合、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.