Erstellen Sie eine neue Ruby on Rails-Anwendung mit MySQL anstelle von SQLite

130

Ich möchte meine Rails-Anwendung mit MySQL erstellen, weil es mir so gut gefällt. Wie kann ich das in der neuesten Version von Rails anstelle der Standard-SQLite tun?

Daniel Broekman
quelle

Antworten:

140

Wenn Sie bereits ein Rails-Projekt haben, ändern Sie den Adapter in der config/database.ymlDatei in mysqlund stellen Sie sicher, dass Sie einen gültigen Benutzernamen und ein gültiges Kennwort sowie optional einen Socket angeben:

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

Stellen Sie als Nächstes sicher, dass Sie Ihre Gemfile so bearbeiten, dass sie den Adapter mysql2 oder activerecord-jdbcmysql enthält (wenn Sie jruby verwenden).

Michiel de Mare
quelle
2
Das ist hilfreich; als die anderen Antworten benutzen Sie einfach den Generator. Diese Antwort dient zum Hinzufügen von MySQL zu einer App, nachdem diese bereits erstellt wurde, entweder um eine vorhandene (z. B. SQLite) Datenbank zu ersetzen oder um eine sekundäre Datenbank hinzuzufügen. Außerdem scheint mysql2 heutzutage das Juwel für Rails zu sein.
RCD
13
Sie müssen auch die Gem-Datei aktualisieren. entfernen gem 'sqlite3'und hinzufügengem 'mysql2'
RGB
262

Normalerweise würden Sie eine neue Rails-App mit erstellen

rails ProjectName

Verwenden Sie zur Verwendung von MySQL

rails new ProjectName -d mysql
Daniel Broekman
quelle
56

Für Rails 3 können Sie diesen Befehl verwenden, um ein neues Projekt mit MySQL zu erstellen:

$ rails new projectname -d mysql
Robbie fertig
quelle
24

Gehen Sie zum Terminal und schreiben Sie:

rails new <project_name> -d mysql
Abhinav
quelle
22

Wenn Sie Ihre App noch nicht erstellt haben, gehen Sie einfach zu cmd (für Windows) oder terminal (für Linux / Unix) und geben Sie den folgenden Befehl ein, um eine Rails-Anwendung mit MySQL-Datenbank zu erstellen:

$rails new <your_app_name> -d mysql

Es funktioniert für alles über Rails Version 3. Wenn Sie Ihre App bereits erstellt haben, können Sie eine der beiden folgenden Aktionen ausführen:

  1. Erstellen Sie eine App mit einem anderen Namen mit der MySQL-Datenbank, gehen Sie zu CD mit einem anderen Namen / config / und kopieren Sie die Datei database.yml von dieser neuen App. Fügen Sie es in die database.yml Ihrer App app_name ein . Stellen Sie jedoch sicher, dass Sie die Datenbanknamen ändern und anschließend den Benutzernamen / das Kennwort Ihrer Datenbank in der Datei database.yml entsprechend festlegen.

ODER

  1. Gehen Sie zu cd your_app_name / config / und öffnen Sie database.yml. Benennen Sie wie folgt um:

Entwicklung:
Adapter: MySQL2
Datenbank: Datenbankname
Benutzername: Root-
Passwort:
Host: Localhost-
Socket: /tmp/mysql.sock

Entfernen Sie außerdem den Edelstein 'sqlite3' aus Ihrer Gemfile und fügen Sie den Edelstein 'mysql2' hinzu.

Drake Mandin
quelle
13

Wenn Sie die Version 3 oder höher verwenden

rails new your_project_name -d mysql

wenn Sie eine frühere Version haben

rails new -d mysql your_project_name

Bevor Sie Ihr Projekt erstellen, müssen Sie die Rails-Version finden. das können Sie finden durch

rails -v
Codierer
quelle
12
rails -d mysql ProjectName
Huacnlee
quelle
11
rails new <project_name> -d mysql

ODER

rails new projectname

Änderungen in config / database.yml

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

Erstellen Sie eine Anwendung mit der Option -d

rails new AppName -d mysql
Dipali Nagrale
quelle
Hat perfekt für mich funktioniert!
Luke
9
$ rails --help 

ist immer dein bester Freund

Verwendung:

$ rails new APP_PATH[options]

Beachten Sie auch, dass Optionen nach dem Anwendungsnamen angegeben werden sollten

Schienen und MySQL

$ rails new project_name -d mysql

Schienen und Postgresql

$ rails new project_name -d postgresql
George Bellos
quelle
8

Sie sollten den Schalter -D anstelle von -d verwenden, da dadurch zwei Apps und MySQL ohne Dokumentationsordner generiert werden.

  rails -D mysql project_name  (less than version 3)

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

Alternativ verwenden Sie einfach die --databaseOption.

Marthinus A. Botha
quelle
7

Gehen Sie einfach zur Rails-Konsole und geben Sie Folgendes ein:

rails new YOURAPPNAME -d mysql
Amarpreet Jethra
quelle
6

In Rails 3 könnten Sie tun

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

Wenn Sie eine neue Rails-Anwendung erstellen, können Sie die Datenbank mit dem Schalter -d wie folgt festlegen:

rails -d mysql myapp

Es ist jedoch immer einfach, Ihre Datenbank später zu wechseln, und die Verwendung von SQLite ist wirklich einfacher, wenn Sie auf einem Mac entwickeln.

James Avery
quelle
3

Bei neuem Projekt einfach peasy:

rails new your_new_project_name -d mysql

Bei bestehenden Projekten definitiv kniffliger. Dies hat mir eine Reihe von Problemen bei bestehenden Schienenprojekten beschert. Diese Art funktioniert bei mir:

# 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
quelle
2

Stellen Sie zuerst sicher, dass MySQL Gem installiert ist, wenn nicht? Geben Sie dann den folgenden Befehl in Ihre Konsole ein

gem install mysql2

Erstellen Sie dann eine neue Rails-App und legen Sie die MySQL-Datenbank als Standarddatenbank fest, indem Sie den folgenden Befehl in Ihre Konsole eingeben

rails new app-name -d mysql
Shabbir
quelle
1
Sie möchten den Edelstein stattdessen zu Gemfile hinzufügen.
Riccardo
0

Verwenden Sie den folgenden Befehl, um eine neue App für die API mit der MySQL-Datenbank zu erstellen

rails new <appname> --api -d mysql


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

Sie sollten zuerst sicherstellen, dass sich der MySQL-Treiber auf Ihrem System befindet, wenn Sie diesen nicht auf Ihrem Terminal ausführen, wenn Sie Ubuntu oder eine Debian-Distribution verwenden

sudo apt-get install mysql-client libmysqlclient-dev

und füge dies deinem Gemfile hinzu

gem 'mysql2', '~> 0.3.16'

Führen Sie dann in Ihrem Stammverzeichnis des Projekts aus

bundle install

Danach können Sie die mysql-Konfiguration wie in den vorherigen Antworten zu config / database.yml hinzufügen

Muhammad Elbadawy
quelle