Crea una nuova applicazione Ruby on Rails usando MySQL invece di SQLite


130

Voglio creare la mia applicazione Rails con MySQL, perché mi piace così tanto. Come posso farlo nell'ultima versione di Rails anziché nello SQLite predefinito?

Risposte:


140

Se disponi già di un progetto rails, modifica l'adattatore nel config/database.ymlfile mysqle assicurati di specificare un nome utente e una password validi e, facoltativamente, un socket:

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

Quindi, assicurati di modificare il tuo Gemfile per includere mysql2 o activerecord-jdbcmysql-adapter (se usi jruby).


2
Questo è utile; come le altre risposte usano solo il generatore. Questa risposta funziona per l'aggiunta di MySQL a un'app dopo che è già stata creata, sia per sostituire un DB esistente (ad es. SQLite) sia per aggiungere un database secondario. Inoltre, mysql2 sembra essere la gemma di riferimento in questi giorni per Rails.
rcd,

13
dovrai anche aggiornare il Gemfile; rimuovi gem 'sqlite3'e aggiungigem 'mysql2'
RGB

262

Normalmente, crei una nuova app Rails usando

rails ProjectName

Per usare MySQL, usa

rails new ProjectName -d mysql

56

Per Rails 3 puoi usare questo comando per creare un nuovo progetto usando mysql:

$ rails new projectname -d mysql

24

Vai al terminale e scrivi:

rails new <project_name> -d mysql

22

Se non hai ancora creato la tua app, vai su cmd (per Windows) o sul terminale (per Linux / Unix) e digita il seguente comando per creare un'applicazione rails con il database mysql:

$rails new <your_app_name> -d mysql

Funziona con qualsiasi cosa sopra le rotaie versione 3. Se hai già creato la tua app, puoi fare una delle 2 cose seguenti:

  1. Crea un'app another_name con il database mysql, vai su cd another_name / config / e copia il file database.yml da questa nuova app. Incollalo nel database.yml dell'app your_app_name . Ma assicurati di cambiare i nomi del database e impostare il nome utente / password del tuo database di conseguenza nel file database.yml dopo averlo fatto.

O

  1. Vai a cd nome_app / config / e apri database.yml. Rinomina come segue:

sviluppo:
adattatore:
database mysql2 : nome_db
nome_utente:
password di root :
host: localhost
socket : /tmp/mysql.sock

Inoltre, rimuovi la gemma 'sqlite3' dal tuo Gemfile e aggiungi la gemma 'mysql2'


13

Se stai usando rotaie 3 o versione successiva

rails new your_project_name -d mysql

se hai una versione precedente

rails new -d mysql your_project_name

Quindi, prima di creare il tuo progetto, devi trovare la versione delle rotaie. che puoi trovare vicino

rails -v


11
rails new <project_name> -d mysql

O

rails new projectname

Modifiche in config / database.yml

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

11

Crea un'applicazione con l'opzione -d

rails new AppName -d mysql

Ha funzionato perfettamente per me!
Luca,

9
$ rails --help 

è sempre il tuo migliore amico

utilizzo:

$ rails new APP_PATH[options]

si noti inoltre che le opzioni devono essere fornite dopo il nome dell'applicazione

rotaie e mysql

$ rails new project_name -d mysql

rotaie e postgresql

$ rails new project_name -d postgresql

8

Dovresti usare l'opzione -D invece di -d perché genererà due app e mysql senza cartelle di documentazione.

  rails -D mysql project_name  (less than version 3)

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

In alternativa basta usare l' --databaseopzione.



6

In Rails 3, potresti farlo

$rails new projectname --database=mysql

6

Se si sta creando una nuova applicazione rails, è possibile impostare il database usando l'opzione -d in questo modo:

rails -d mysql myapp

Tuttavia, è sempre facile cambiare il database in un secondo momento, e l'utilizzo di sqlite è davvero più semplice se si sta sviluppando su un Mac.


3

Su un nuovo progetto, facile peasy:

rails new your_new_project_name -d mysql

Sul progetto esistente, decisamente più complicato. Questo mi ha dato una serie di problemi sui progetti di binari esistenti. Questo tipo di lavoro con me:

# 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

Per prima cosa assicurati che mysql gem sia installato, in caso contrario? quindi digita il seguente comando nella tua console

gem install mysql2

Quindi crea una nuova app rotaie e imposta il database mysql come database predefinito digitando il seguente comando nella tua console

rails new app-name -d mysql

1
vuoi invece aggiungere la gemma a Gemfile.
Riccardo

0

Utilizzare il comando seguente per creare una nuova app per API con database 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

dovresti prima assicurarti che il driver MySQL sia sul tuo sistema se non eseguilo sul tuo terminale se stai usando Ubuntu o qualsiasi distribuzione Debian

sudo apt-get install mysql-client libmysqlclient-dev

e aggiungilo al tuo Gemfile

gem 'mysql2', '~> 0.3.16'

quindi esegui nella directory principale del progetto

bundle install

successivamente è possibile aggiungere mysql config a config / database.yml come risposte precedenti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.