Tôi muốn tạo ứng dụng Rails của mình với MySQL, vì tôi rất thích nó. Làm cách nào tôi có thể làm điều đó trong phiên bản Rails mới nhất thay vì SQLite mặc định?
Tôi muốn tạo ứng dụng Rails của mình với MySQL, vì tôi rất thích nó. Làm cách nào tôi có thể làm điều đó trong phiên bản Rails mới nhất thay vì SQLite mặc định?
Câu trả lời:
Nếu bạn đã có một dự án đường ray, hãy thay đổi bộ điều hợp trong config/database.yml
tệp thành mysql
và đảm bảo bạn chỉ định tên người dùng và mật khẩu hợp lệ và tùy chọn, một ổ cắm:
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
Tiếp theo, hãy đảm bảo bạn chỉnh sửa Gemfile của mình để bao gồm mysql2 hoặc activerecord-jdbcmysql-adapter (nếu sử dụng jruby).
gem 'sqlite3'
và thêmgem 'mysql2'
Thông thường, bạn sẽ tạo một ứng dụng Rails mới bằng cách sử dụng
rails ProjectName
Để sử dụng MySQL, sử dụng
rails new ProjectName -d mysql
Đối với Rails 3, bạn có thể sử dụng lệnh này để tạo dự án mới bằng mysql:
$ rails new projectname -d mysql
Nếu bạn chưa tạo ứng dụng của mình, chỉ cần truy cập cmd (cho windows) hoặc terminal (cho linux / unix) và nhập lệnh sau để tạo ứng dụng rails với cơ sở dữ liệu mysql:
$rails new <your_app_name> -d mysql
Nó hoạt động cho mọi thứ trên đường ray phiên bản 3. Nếu bạn đã tạo ứng dụng của mình, thì bạn có thể thực hiện một trong 2 điều sau:
HOẶC LÀ
phát triển:
bộ chuyển đổi:
cơ sở dữ liệu mysql2 :
tên người dùng db_name_name :
mật khẩu gốc :
máy chủ:
ổ cắm localhost : /tmp/mysql.sock
Hơn nữa, xóa đá quý 'sqlite3' khỏi Gemfile của bạn và thêm đá quý 'mysql2'
rails new <project_name> -d mysql
HOẶC LÀ
rails new projectname
Thay đổi trong config / database.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
$ rails --help
luôn là người bạn tốt nhất của bạn
sử dụng:
$ rails new APP_PATH[options]
cũng lưu ý rằng các tùy chọn nên được đưa ra sau tên ứng dụng
đường ray và mysql
$ rails new project_name -d mysql
đường ray và postgresql
$ rails new project_name -d postgresql
Bạn nên sử dụng switch -D thay vì -d vì nó sẽ tạo ra hai ứng dụng và mysql không có thư mục tài liệu.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
Hoặc bạn chỉ cần sử dụng --database
tùy chọn.
Chỉ cần vào bảng điều khiển rails và gõ:
rails new YOURAPPNAME -d mysql
Nếu bạn đang tạo một ứng dụng rails mới, bạn có thể thiết lập cơ sở dữ liệu bằng cách sử dụng khóa -d như thế này:
rails -d mysql myapp
Việc chuyển đổi cơ sở dữ liệu của bạn sau này luôn dễ dàng và việc sử dụng sqlite thực sự dễ dàng hơn nếu bạn đang phát triển trên máy Mac.
Về dự án mới, dễ dàng:
rails new your_new_project_name -d mysql
Trên dự án hiện tại, chắc chắn phức tạp hơn. Điều này đã cho tôi một số vấn đề về các dự án đường ray hiện có. Đây là loại công việc với tôi:
# 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
Trước tiên hãy chắc chắn rằng đá quý mysql đã được cài đặt, nếu không? hơn loại lệnh sau trong bảng điều khiển của bạn
gem install mysql2
Hơn tạo ứng dụng rails mới và đặt cơ sở dữ liệu mysql làm cơ sở dữ liệu mặc định bằng cách nhập lệnh sau trong bảng điều khiển của bạn
rails new app-name -d mysql
Sử dụng lệnh sau để tạo ứng dụng mới cho API với cơ sở dữ liệu mysql
rails new <appname> --api -d mysql
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
cơ sở dữ liệu.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
Đá quý :
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
trước tiên bạn nên đảm bảo rằng trình điều khiển MySQL có trên hệ thống của bạn nếu không chạy trình này trên thiết bị đầu cuối của bạn nếu bạn đang sử dụng Ubuntu hoặc bất kỳ bản phân phối Debian nào
sudo apt-get install mysql-client libmysqlclient-dev
và thêm nó vào Gemfile của bạn
gem 'mysql2', '~> 0.3.16'
sau đó chạy trong thư mục gốc của dự án
bundle install
sau đó, bạn có thể thêm cấu hình mysql vào config / database.yml như các câu trả lời trước đó