使用 MySQL 而不是 SQLite 创建一个新的 RubyonRails 应用程序

我想用 MySQL 创建我的 Rails 应用程序,因为我非常喜欢它。如何在 Rails 的最新版本中而不是默认的 SQLite 中做到这一点?

156438 次浏览

通常,您会使用以下方法创建一个新的 Rails 应用程序

rails ProjectName

要使用 MySQL,请使用

rails new ProjectName -d mysql

如果您正在创建一个新的 Rails 应用程序,您可以使用-d 开关设置数据库,如下所示:

rails -d mysql myapp

不过以后切换数据库总是很容易,如果在 Mac 上开发,使用 sqlite 确实更容易。

如果您已经有一个 Rails 项目,请将 config/database.yml文件中的适配器更改为 mysql,并确保指定有效的用户名和密码,以及可选的套接字:

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

接下来,确保编辑 Gemfile 以包含 mysql2或 activerrecord-jdbcmysql-Adapter (如果使用 jruby)。

rails -d mysql ProjectName

对于 Rails 3,您可以使用以下命令使用 mysql 创建一个新项目:

$ rails new projectname -d mysql

在 Rails 3中,你可以

$rails new projectname --database=mysql

如果您使用 Rails 3或更高版本

rails new your_project_name -d mysql

如果你有更早的版本

rails new -d mysql your_project_name

因此,在创建项目之前,您需要找到您可以通过

rails -v
$ rails --help

永远是你最好的朋友

用途:

$ rails new APP_PATH[options]

还要注意,应该在应用程序名称之后给出选项

Rails 和 mysql

$ rails new project_name -d mysql

轨道和后路

$ rails new project_name -d postgresql

您应该使用 switch-D 而不是-d,因为它将生成两个没有文档文件夹的 app 和 mysql。

  rails -D mysql project_name  (less than version 3)


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

或者,您只需使用 --database选项。

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 new <project_name> -d mysql

使用 -d 选项创建应用程序

rails new AppName -d mysql

如果您还没有创建您的应用程序,只需转到 cmd (用于 windows)或终端(用于 linux/unix)并键入以下命令来创建一个使用 mysql 数据库的 Rails 应用程序:

$rails new <your_app_name> -d mysql

它适用于轨道版本3以上的任何东西。如果你已经创建了你的应用程序,那么你可以做以下两件事之一:

  1. 使用 mysql 数据库创建一个 另一个 _ name应用程序,转到 cd 另一个 _ name/config/并从这个新应用程序中复制 database. yml 文件。将其粘贴到 你的 _ app _ name应用程序的 datase.yml 中。但是请确保更改数据库名称,并在执行此操作之后在 datase.yml 文件中相应地设置数据库的用户名/密码。

或者

  1. 转到 cd 你的 _ app _ name/config/并打开 database. yml:

发展:
适配器: mysql2
database: db_name_name
用户名: root
密码:
主机: 本地主机
Socket:/tmp/mysql.sock < br >

此外,从 Gemfile 中删除 gem‘ sqlite3’并添加 gem‘ mysql2’

打开 Rails 控制台,输入:

rails new YOURAPPNAME -d mysql

首先确保安装了 mysql gem,如果没有,那么在控制台中键入以下命令

gem install mysql2

然后创建新的 Rails 应用程序,并通过在控制台中键入以下命令将 mysql 数据库设置为默认数据库

rails new app-name -d mysql

在新项目上,小菜一碟:

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 数据库的 API 创建新的应用程序

rails new <appname> --api -d mysql




adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock

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'

如果你正在使用 Ubuntu 或任何 Debian 发行版,你首先应该确保 MySQL 驱动程序在你的系统上,如果没有在你的终端上运行它

sudo apt-get install mysql-client libmysqlclient-dev

并添加到您的 Gemfile

gem 'mysql2', '~> 0.3.16'

然后在项目的根目录中运行

bundle install

之后,您可以将 mysql 配置添加到 config/database. yml,作为前面的答案