Tạo một ứng dụng Ruby on Rails mới bằng MySQL thay vì SQLite


130

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:


140

Nếu bạn đã có một dự án đường ray, hãy thay đổi bộ điều hợp trong config/database.ymltệp thành mysqlvà đả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).


2
Điều này rất hữu ích; như các câu trả lời khác chỉ cần sử dụng máy phát điện. Câu trả lời này hoạt động để thêm MySQL vào một ứng dụng sau khi nó đã được tạo, để thay thế DB (ví dụ SQLite) hiện có hoặc để thêm cơ sở dữ liệu thứ cấp. Ngoài ra, mysql2 dường như là viên ngọc quý cho Rails ngày nay.
rcd

13
bạn cũng sẽ phải cập nhật Gemfile; xóa gem 'sqlite3'và thêmgem 'mysql2'
RGB

262

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

56

Đố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

24

Đi đến thiết bị đầu cuối và viết:

rails new <project_name> -d mysql

22

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:

  1. Tạo một ứng dụng other_name với cơ sở dữ liệu mysql, đi đến cd Another_name / config / và sao chép tệp cơ sở dữ liệu.yml từ ứng dụng mới này. Dán nó vào cơ sở dữ liệu.yml của ứng dụng your_app_name . Nhưng đảm bảo thay đổi tên cơ sở dữ liệu và đặt tên người dùng / mật khẩu của cơ sở dữ liệu của bạn phù hợp trong tệp cơ sở dữ liệu.yml sau khi làm như vậy.

HOẶC LÀ

  1. Truy cập cd your_app_name / config / và mở cơ sở dữ liệu.yml . Đổi tên như sau:

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'


13

Nếu bạn đang sử dụng rails 3 hoặc phiên bản lớn hơn

rails new your_project_name -d mysql

nếu bạn có phiên bản cũ hơn

rails new -d mysql your_project_name

Vì vậy, trước khi bạn tạo dự án của mình, bạn cần tìm phiên bản đường ray. mà bạn có thể tìm thấy bởi

rails -v


11
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


9
$ 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

8

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 --databasetùy chọn.



6

Trong Rails 3, bạn có thể làm

$rails new projectname --database=mysql

6

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.


3

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 

2

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

1
thay vào đó, bạn muốn thêm đá quý vào Gemfile.
Riccardo

0

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

0

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'

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 đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.