Utwórz nową aplikację Ruby on Rails przy użyciu MySQL zamiast SQLite

132

Chcę stworzyć moją aplikację Railsową z MySQL, ponieważ bardzo mi się to podoba. Jak mogę to zrobić w najnowszej wersji Railsów zamiast domyślnego SQLite?

Daniel Broekman
źródło

Odpowiedzi:

142

Jeśli masz już projekt railsów, zmień adapter w config/database.ymlpliku na mysqli upewnij się, że podałeś poprawną nazwę użytkownika i hasło oraz opcjonalnie gniazdo:

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

Następnie upewnij się, że edytujesz swój plik Gemfile, aby zawierał adapter mysql2 lub activerecord-jdbcmysql (jeśli używasz jruby).

Michiel de Mare
źródło
2
To jest pomocne; w przypadku innych odpowiedzi wystarczy skorzystać z generatora. Ta odpowiedź działa w przypadku dodawania MySQL do aplikacji po jej utworzeniu, aby zastąpić istniejącą bazę danych (np. SQLite) lub dodać pomocniczą bazę danych. Ponadto mysql2 wydaje się być w dzisiejszych czasach prawdziwym klejnotem dla Railsów.
rcd
13
będziesz musiał również zaktualizować Gemfile; usuń gem 'sqlite3'i dodajgem 'mysql2'
RGB
262

Normalnie stworzyłbyś nową aplikację Railsów używając

rails ProjectName

Aby korzystać z MySQL, użyj

rails new ProjectName -d mysql
Daniel Broekman
źródło
57

W przypadku Rails 3 możesz użyć tego polecenia, aby utworzyć nowy projekt za pomocą mysql:

$ rails new projectname -d mysql
Robbie Gotowe
źródło
25

Podejdź do terminala i napisz:

rails new <project_name> -d mysql
Abhinav
źródło
22

Jeśli jeszcze nie stworzyłeś swojej aplikacji, po prostu przejdź do cmd (dla Windows) lub terminala (dla linux / unix) i wpisz następujące polecenie, aby utworzyć aplikację railsową z bazą danych mysql:

$rails new <your_app_name> -d mysql

Działa dla wszystkich wersji powyżej rails 3. Jeśli masz już utworzoną aplikację, możesz wykonać jedną z dwóch następujących czynności:

  1. Utwórz aplikację another_name z bazą danych mysql, przejdź do cd another_name / config / i skopiuj plik database.yml z tej nowej aplikacji. Wklej go do pliku database.yml aplikacji your_app_name . Ale pamiętaj, aby zmienić nazwy baz danych i odpowiednio ustawić nazwę użytkownika / hasło bazy danych w pliku database.yml po wykonaniu tej czynności.

LUB

  1. Idź do cd twoja_nazwa_aplikacji / config / i otwórz database.yml. Zmień nazwę w następujący sposób:

programowanie:
adapter: baza
danych mysql2 : nazwa_bazy_db
nazwa_użytkownika:
hasło roota :
host: host
lokalny gniazdo: /tmp/mysql.sock

Co więcej, usuń gem 'sqlite3' z twojego Gemfile i dodaj gem 'mysql2'

Drake Mandin
źródło
13

Jeśli używasz szyn w wersji 3 lub nowszej

rails new your_project_name -d mysql

jeśli masz wcześniejszą wersję

rails new -d mysql your_project_name

Więc zanim stworzysz swój projekt, musisz znaleźć wersję dla szyn. które możesz znaleźć

rails -v
Koder
źródło
12
rails -d mysql ProjectName
huacnlee
źródło
11
rails new <project_name> -d mysql

LUB

rails new projectname

Zmiany w config / database.yml

development:
  adapter: mysql2
  database: db_name_name
  username: root
  password:
  host: localhost
  socket: /tmp/mysql.sock
vijay chouhan
źródło
11

Utwórz aplikację z opcją -d

rails new AppName -d mysql
Dipali Nagrale
źródło
U mnie zadziałało idealnie!
Luke
9
$ rails --help 

jest zawsze twoim najlepszym przyjacielem

stosowanie:

$ rails new APP_PATH[options]

należy również pamiętać, że opcje należy podać po nazwie aplikacji

rails oraz mysql

$ rails new project_name -d mysql

rails i postgresql

$ rails new project_name -d postgresql
George Bellos
źródło
9

Powinieneś użyć przełącznika -D zamiast -d, ponieważ wygeneruje on dwie aplikacje i mysql bez folderów z dokumentacją.

  rails -D mysql project_name  (less than version 3)

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

Alternatywnie możesz po prostu skorzystać z --databaseopcji.

Marthinus A. Botha
źródło
7

Po prostu przejdź do konsoli torów i wpisz:

rails new YOURAPPNAME -d mysql
Amarpreet Jethra
źródło
6

W Rails 3 możesz to zrobić

$rails new projectname --database=mysql
andy318
źródło
6

Jeśli tworzysz nową aplikację railsową, możesz ustawić bazę danych za pomocą przełącznika -d w następujący sposób:

rails -d mysql myapp

Jednak zawsze łatwo jest zmienić bazę danych później, a używanie sqlite jest naprawdę łatwiejsze, jeśli tworzysz na komputerze Mac.

James Avery
źródło
3

W nowym projekcie, łatwe peasy:

rails new your_new_project_name -d mysql

Na istniejącym projekcie zdecydowanie trudniejsze. To spowodowało wiele problemów z istniejącymi projektami szyn. Ten rodzaj działa ze mną:

# 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
źródło
2

Najpierw upewnij się, że mysql gem jest zainstalowany, jeśli nie? niż wpisz następujące polecenie w konsoli

gem install mysql2

Następnie utwórz nową aplikację railsową i ustaw bazę danych mysql jako domyślną bazę danych, wpisując następujące polecenie w konsoli

rails new app-name -d mysql
Shabbir
źródło
1
zamiast tego chcesz dodać klejnot do Gemfile.
Riccardo,
0

Użyj następującego polecenia, aby utworzyć nową aplikację dla interfejsu API z bazą danych mysql

rails new <appname> --api -d mysql


  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock
Dinesh Vaitage
źródło
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
źródło
0

najpierw upewnij się, że sterownik MySQL jest w twoim systemie, jeśli nie uruchom go na swoim terminalu, jeśli używasz Ubuntu lub dowolnej dystrybucji Debiana

sudo apt-get install mysql-client libmysqlclient-dev

i dodaj to do swojego Gemfile

gem 'mysql2', '~> 0.3.16'

następnie uruchom w katalogu głównym projektu

bundle install

następnie możesz dodać konfigurację mysql do config / database.yml jako poprzednie odpowiedzi

Muhammad Elbadawy
źródło