สร้างแอปพลิเคชั่น Ruby on Rails ใหม่โดยใช้ MySQL แทน SQLite


130

ฉันต้องการสร้างแอพพลิเคชั่น Rails ด้วย MySQL เพราะฉันชอบมันมาก ฉันจะทำสิ่งนั้นใน Rails รุ่นล่าสุดแทนที่จะเป็น SQLite เริ่มต้นได้อย่างไร

คำตอบ:


140

หากคุณมีโครงการรางอยู่ให้เปลี่ยนอะแด็ปเตอร์ใน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
สิ่งนี้มีประโยชน์ เป็นคำตอบอื่น ๆ เพียงแค่ใช้ตัวกำเนิด คำตอบนี้ใช้ได้สำหรับการเพิ่ม MySQL ลงในแอพหลังจากที่มันถูกสร้างขึ้นแล้วเพื่อแทนที่ฐานข้อมูลที่มีอยู่ (เช่น SQLite) หรือเพื่อเพิ่มฐานข้อมูลรอง นอกจากนี้ mysql2 น่าจะเป็นอัญมณีที่ติดตัวทุกวันนี้สำหรับ Rails
rcd

13
คุณจะต้องอัปเดต Gemfile ด้วย ลบgem 'sqlite3'และเพิ่มgem 'mysql2'
RGB

262

โดยปกติแล้วคุณจะสร้างแอพ Rails ใหม่โดยใช้

rails ProjectName

ในการใช้ MySQL ให้ใช้

rails new ProjectName -d mysql

56

สำหรับ Rails 3 คุณสามารถใช้คำสั่งนี้เพื่อสร้างโครงการใหม่โดยใช้ mysql:

$ rails new projectname -d mysql


22

หากคุณยังไม่ได้สร้างแอพให้ไปที่ cmd (สำหรับ windows) หรือเทอร์มินัล (สำหรับ linux / unix) และพิมพ์คำสั่งต่อไปนี้เพื่อสร้างแอปพลิเคชั่นรางพร้อมฐานข้อมูล mysql:

$rails new <your_app_name> -d mysql

มันใช้งานได้กับทุกอย่างที่อยู่เหนือรางรถไฟรุ่น 3 ถ้าคุณสร้างแอพของคุณแล้วคุณสามารถทำหนึ่งในสองสิ่งต่อไปนี้:

  1. สร้างแอปanother_nameพร้อมฐานข้อมูล mysql ไปที่ cd another_name / config / และคัดลอกไฟล์ database.yml จากแอพใหม่นี้ วางลงใน database.yml ของแอปyour_app_name แต่ให้แน่ใจว่าได้เปลี่ยนชื่อฐานข้อมูลและตั้งชื่อผู้ใช้ / รหัสผ่านของฐานข้อมูลของคุณตามในไฟล์ database.yml หลังจากทำเช่นนั้น

หรือ

  1. ไปที่ cd your_app_name / config / และเปิด database.yml เปลี่ยนชื่อดังนี้

การพัฒนา:
อะแดปเตอร์:
ฐานข้อมูลmysql2 :
ชื่อผู้ใช้db_name_name :
รหัสผ่านรูท:
โฮสต์:
ซ็อกเก็ต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 เพราะมันจะสร้างสองแอปและ mysql โดยไม่มีโฟลเดอร์เอกสาร

  rails -D mysql project_name  (less than version 3)

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

หรือคุณเพียงแค่ใช้--databaseตัวเลือก




6

หากคุณกำลังสร้างแอพพลิเคชั่นรางใหม่คุณสามารถตั้งค่าฐานข้อมูลโดยใช้สวิตช์ -d ดังนี้:

rails -d mysql myapp

มันง่ายเสมอที่จะเปลี่ยนฐานข้อมูลของคุณในภายหลังและการใช้ sqlite จะง่ายกว่าถ้าคุณพัฒนาบน Mac


3

ในโครงการใหม่ peasy ง่าย ๆ :

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 แทน
Riccardo

0

ใช้คำสั่งต่อไปนี้เพื่อสร้างแอพใหม่สำหรับ API ด้วยฐานข้อมูล mysql

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

อันดับแรกคุณควรตรวจสอบให้แน่ใจว่าไดรเวอร์ MySQL อยู่ในระบบของคุณหากไม่ได้ใช้งานบนเทอร์มินัลของคุณหากคุณใช้ Ubuntu หรือ Debian distro

sudo apt-get install mysql-client libmysqlclient-dev

และเพิ่มลงใน Gemfile ของคุณ

gem 'mysql2', '~> 0.3.16'

จากนั้นเรียกใช้ในไดเรกทอรีรากของโครงการ

bundle install

หลังจากนั้นคุณสามารถเพิ่ม mysql config เพื่อ config / database.yml เป็นคำตอบก่อนหน้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.