ฉันต้องการสร้างแอพพลิเคชั่น Rails ด้วย MySQL เพราะฉันชอบมันมาก ฉันจะทำสิ่งนั้นใน Rails รุ่นล่าสุดแทนที่จะเป็น SQLite เริ่มต้นได้อย่างไร
ฉันต้องการสร้างแอพพลิเคชั่น Rails ด้วย MySQL เพราะฉันชอบมันมาก ฉันจะทำสิ่งนั้นใน Rails รุ่นล่าสุดแทนที่จะเป็น SQLite เริ่มต้นได้อย่างไร
คำตอบ:
หากคุณมีโครงการรางอยู่ให้เปลี่ยนอะแด็ปเตอร์ใน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
สำหรับ Rails 3 คุณสามารถใช้คำสั่งนี้เพื่อสร้างโครงการใหม่โดยใช้ mysql:
$ rails new projectname -d mysql
ไปที่เทอร์มินัลแล้วเขียน:
rails new <project_name> -d mysql
หากคุณยังไม่ได้สร้างแอพให้ไปที่ cmd (สำหรับ windows) หรือเทอร์มินัล (สำหรับ linux / unix) และพิมพ์คำสั่งต่อไปนี้เพื่อสร้างแอปพลิเคชั่นรางพร้อมฐานข้อมูล mysql:
$rails new <your_app_name> -d mysql
มันใช้งานได้กับทุกอย่างที่อยู่เหนือรางรถไฟรุ่น 3 ถ้าคุณสร้างแอพของคุณแล้วคุณสามารถทำหนึ่งในสองสิ่งต่อไปนี้:
หรือ
การพัฒนา:
อะแดปเตอร์:
ฐานข้อมูลmysql2 :
ชื่อผู้ใช้db_name_name :
รหัสผ่านรูท:
โฮสต์:
ซ็อกเก็ตlocalhost : /tmp/mysql.sock
นอกจากนี้ลบ gem 'sqlite3' จาก Gemfile ของคุณและเพิ่ม gem 'mysql2'
หากคุณใช้ Rails 3 หรือสูงกว่า
rails new your_project_name -d mysql
หากคุณมีรุ่นก่อนหน้า
rails new -d mysql your_project_name
ดังนั้นก่อนที่คุณจะสร้างโครงการคุณจำเป็นต้องค้นหาเวอร์ชันของราง ที่คุณสามารถค้นหาโดย
rails -v
rails -d mysql ProjectName
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
$ rails --help
เป็นเพื่อนที่ดีที่สุดของคุณเสมอ
การใช้งาน:
$ rails new APP_PATH[options]
โปรดทราบว่าตัวเลือกควรได้รับหลังจากชื่อแอปพลิเคชัน
รางและ mysql
$ rails new project_name -d mysql
ทางรถไฟและ postgresql
$ rails new project_name -d postgresql
คุณควรใช้สวิตช์ -D แทน -d เพราะมันจะสร้างสองแอปและ 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 3 คุณสามารถทำได้
$rails new projectname --database=mysql
หากคุณกำลังสร้างแอพพลิเคชั่นรางใหม่คุณสามารถตั้งค่าฐานข้อมูลโดยใช้สวิตช์ -d ดังนี้:
rails -d mysql myapp
มันง่ายเสมอที่จะเปลี่ยนฐานข้อมูลของคุณในภายหลังและการใช้ sqlite จะง่ายกว่าถ้าคุณพัฒนาบน Mac
ในโครงการใหม่ 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
ก่อนอื่นต้องตรวจสอบให้แน่ใจว่าติดตั้ง mysql gem แล้วหรือไม่? กว่าพิมพ์คำสั่งต่อไปนี้ในคอนโซลของคุณ
gem install mysql2
กว่าสร้างแอพ Rails ใหม่และตั้งฐานข้อมูล mysql เป็นฐานข้อมูลเริ่มต้นโดยพิมพ์คำสั่งต่อไปนี้ในคอนโซลของคุณ
rails new app-name -d mysql
ใช้คำสั่งต่อไปนี้เพื่อสร้างแอพใหม่สำหรับ API ด้วยฐานข้อมูล mysql
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'
อันดับแรกคุณควรตรวจสอบให้แน่ใจว่าไดรเวอร์ 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 เป็นคำตอบก่อนหน้า