Buat aplikasi Ruby on Rails baru menggunakan MySQL, bukan SQLite

130

Saya ingin membuat aplikasi Rails saya dengan MySQL, karena saya sangat menyukainya. Bagaimana saya bisa melakukannya di versi Rails terbaru alih-alih SQLite default?

Daniel Broekman
sumber

Jawaban:

140

Jika Anda sudah memiliki proyek rails, ubah adaptor dalam config/database.ymlfile tersebut mysqldan pastikan Anda menentukan nama pengguna dan kata sandi yang valid, dan secara opsional, soket:

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

Selanjutnya, pastikan Anda mengedit Gemfile Anda untuk menyertakan mysql2 atau activerecord-jdbcmysql-adapter (jika menggunakan jruby).

Michiel de Mare
sumber
2
Ini sangat membantu; sebagai jawaban lain hanya menggunakan generator. Jawaban ini berfungsi untuk menambahkan MySQL ke aplikasi setelah itu sudah dibuat, baik untuk menggantikan DB (misalnya SQLite) yang ada atau untuk menambahkan database sekunder. Juga, mysql2 tampaknya menjadi permata untuk hari ini untuk Rails.
rcd
13
Anda juga harus memperbarui Gemfile; hapus gem 'sqlite3'dan tambahkangem 'mysql2'
RGB
262

Biasanya, Anda akan membuat aplikasi Rails baru menggunakan

rails ProjectName

Untuk menggunakan MySQL, gunakan

rails new ProjectName -d mysql
Daniel Broekman
sumber
56

Untuk Rails 3 Anda dapat menggunakan perintah ini untuk membuat proyek baru menggunakan mysql:

$ rails new projectname -d mysql
Robbie Done
sumber
24

Pergi ke terminal dan tulis:

rails new <project_name> -d mysql
Abhinav
sumber
22

Jika Anda belum membuat aplikasi Anda, cukup buka cmd (untuk windows) atau terminal (untuk linux / unix) dan ketik perintah berikut untuk membuat aplikasi rel dengan database mysql:

$rails new <your_app_name> -d mysql

Ini berfungsi untuk apa pun di atas versi rel 3. Jika Anda sudah membuat aplikasi, maka Anda dapat melakukan salah satu dari 2 hal berikut:

  1. Buat aplikasi another_name dengan database mysql, buka cd another_name / config / dan salin file database.yml dari aplikasi baru ini. Rekatkan ke database.yml aplikasi your_app_name Anda . Tetapi pastikan untuk mengubah nama database dan atur nama pengguna / kata sandi database Anda sesuai dalam file database.yml setelah melakukannya.

ATAU

  1. Buka cd your_app_name / config / dan buka database.yml. Ganti nama sebagai berikut:

pengembangan:
adaptor:
database mysql2 : db_name_name
nama pengguna: root
password:
host: localhost
socket: /tmp/mysql.sock

Selain itu, hapus permata 'sqlite3' dari Gemfile Anda dan tambahkan permata 'mysql2'

Drake Mandin
sumber
13

Jika Anda menggunakan versi rel 3 atau lebih tinggi

rails new your_project_name -d mysql

jika Anda memiliki versi sebelumnya

rails new -d mysql your_project_name

Jadi sebelum Anda membuat proyek Anda, Anda perlu menemukan versi rel. Anda dapat menemukannya

rails -v
Coder
sumber
12
rails -d mysql ProjectName
huacnlee
sumber
11
rails new <project_name> -d mysql

ATAU

rails new projectname

Perubahan pada config / database.yml

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

Buat aplikasi dengan opsi -d

rails new AppName -d mysql
Dipali Nagrale
sumber
Bekerja dengan sempurna untuk saya!
Luke
9
$ rails --help 

selalu teman baikmu

pemakaian:

$ rails new APP_PATH[options]

juga perhatikan bahwa opsi harus diberikan setelah nama aplikasi

rel dan mysql

$ rails new project_name -d mysql

rel dan postgresql

$ rails new project_name -d postgresql
George Bellos
sumber
8

Anda harus menggunakan switch -D bukannya -d karena akan menghasilkan dua aplikasi dan mysql tanpa folder dokumentasi.

  rails -D mysql project_name  (less than version 3)

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

Atau Anda cukup menggunakan --databaseopsi.

Marthinus A. Botha
sumber
7

Cukup buka konsol rails dan ketik:

rails new YOURAPPNAME -d mysql
Amarpreet Jethra
sumber
6

Di Rails 3, Anda bisa melakukannya

$rails new projectname --database=mysql
andy318
sumber
6

Jika Anda membuat aplikasi rel baru, Anda dapat mengatur database menggunakan -d switch seperti ini:

rails -d mysql myapp

Selalu mudah untuk mengganti database Anda nanti, dan menggunakan sqlite benar-benar lebih mudah jika Anda mengembangkan pada Mac.

James Avery
sumber
3

Pada proyek baru, peasy mudah:

rails new your_new_project_name -d mysql

Pada proyek yang ada, pasti lebih rumit. Ini telah memberi saya sejumlah masalah pada proyek kereta api yang ada. Jenis bekerja dengan saya:

# 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 
Riccardo
sumber
2

Pertama, pastikan permata mysql diinstal, jika tidak? daripada mengetik perintah berikut di konsol Anda

gem install mysql2

Daripada membuat aplikasi rel baru dan mengatur database mysql sebagai database default dengan mengetik perintah berikut di konsol Anda

rails new app-name -d mysql
Shabbir
sumber
1
Anda ingin menambahkan permata ke Gemfile sebagai gantinya.
Riccardo
0

Gunakan perintah berikut untuk membuat aplikasi baru untuk API dengan database mysql

rails new <appname> --api -d mysql


  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock
Dinesh Vaitage
sumber
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'
artamonovdev
sumber
0

Anda pertama-tama harus memastikan bahwa driver MySQL ada di sistem Anda jika tidak menjalankan ini di terminal Anda jika Anda menggunakan Ubuntu atau distro Debian apa pun

sudo apt-get install mysql-client libmysqlclient-dev

dan tambahkan ini ke Gemfile Anda

gem 'mysql2', '~> 0.3.16'

kemudian jalankan di direktori root proyek Anda

bundle install

setelah itu Anda dapat menambahkan konfigurasi mysql ke config / database.yml sebagai jawaban sebelumnya

Muhammad Elbadawy
sumber