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?
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?
Antworten:
Wenn Sie bereits ein Rails-Projekt haben, ändern Sie den Adapter in der config/database.yml
Datei in mysql
und 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).
gem 'sqlite3'
und hinzufügengem 'mysql2'
Normalerweise würden Sie eine neue Rails-App mit erstellen
rails ProjectName
Verwenden Sie zur Verwendung von MySQL
rails new ProjectName -d mysql
Für Rails 3 können Sie diesen Befehl verwenden, um ein neues Projekt mit MySQL zu erstellen:
$ rails new projectname -d mysql
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:
ODER
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.
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
Erstellen Sie eine Anwendung mit der Option -d
rails new AppName -d mysql
$ 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
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 --database
Option.
Gehen Sie einfach zur Rails-Konsole und geben Sie Folgendes ein:
rails new YOURAPPNAME -d mysql
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.
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
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
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
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'
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