MySQLを使用してRailsアプリケーションを作成したいのは、とても気に入っているからです。デフォルトのSQLiteではなく、最新バージョンのRailsでそれを行うにはどうすればよいですか?
MySQLを使用してRailsアプリケーションを作成したいのは、とても気に入っているからです。デフォルトのSQLiteではなく、最新バージョンのRailsでそれを行うにはどうすればよいですか?
回答:
すでに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を使用している場合)が含まれていることを確認します。
gem 'sqlite3'
して追加gem 'mysql2'
通常、次を使用して新しいRailsアプリを作成します
rails ProjectName
MySQLを使用するには、
rails new ProjectName -d mysql
アプリをまだ作成していない場合は、cmd(windowsの場合)またはterminal(linux / unixの場合)に移動し、次のコマンドを入力して、mysqlデータベースでRailsアプリケーションを作成します。
$rails new <your_app_name> -d mysql
Railsバージョン3以上で機能します。すでにアプリを作成している場合は、次の2つのいずれかを実行できます。
または
開発:
アダプター:mysql2
データベース:db_name_name
ユーザー名:root
パスワード:
ホスト:localhost
ソケット:/tmp/mysql.sock
さらに、gem 'sqlite3'をGemfileから削除し、gem 'mysql2'を追加します。
-dの代わりにスイッチ-Dを使用する必要があります。ドキュメントフォルダーのない2つのアプリとmysqlが生成されるためです。
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
あるいは、--database
オプションを使用するだけです。
Railsコンソールに移動して、次のように入力します。
rails new YOURAPPNAME -d mysql
新しいRailsアプリケーションを作成する場合は、次のように-dスイッチを使用してデータベースを設定できます。
rails -d mysql myapp
ただし、後でデータベースを切り替えるのは常に簡単です。Macで開発している場合は、sqliteを使用する方が簡単です。
新しいプロジェクトでは、簡単にできます:
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
mysqlデータベースでAPIの新しいアプリを作成するには、次のコマンドを使用します
rails new <appname> --api -d mysql
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
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'
UbuntuまたはDebianディストリビューションを使用している場合、端末でこれを実行しない場合、MySQLドライバーがシステムにあることを最初に確認する必要があります
sudo apt-get install mysql-client libmysqlclient-dev
これをGemfileに追加します
gem 'mysql2', '~> 0.3.16'
次に、プロジェクトのルートディレクトリで実行します
bundle install
その後、前の回答としてmysql設定をconfig / database.ymlに追加できます