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

Posted

技术标签:

【中文标题】使用 MySQL 而不是 SQLite 创建一个新的 Ruby on Rails 应用程序【英文标题】:Create a new Ruby on Rails application using MySQL instead of SQLite 【发布时间】:2010-09-05 10:31:31 【问题描述】:

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

【问题讨论】:

【参考方案1】:

通常,您会使用

创建一个新的 Rails 应用程序
rails ProjectName

要使用 MySQL,请使用

rails new ProjectName -d mysql

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

这很有帮助;因为其他答案只是使用生成器。此答案适用于在创建应用程序后将 MySQL 添加到应用程序,以替换现有(例如 SQLite)数据库或添加辅助数据库。此外,最近 mysql2 似乎是 Rails 的首选宝石。 您还必须更新 Gemfile;删除gem 'sqlite3' 并添加gem 'mysql2'【参考方案3】:

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

$ rails new projectname -d mysql

【讨论】:

【参考方案4】:

去终端写:

rails new <project_name> -d mysql

【讨论】:

【参考方案5】:

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

$rails new &lt;your_app_name&gt; -d mysql

它适用于 Rails 版本 3 以上的任何内容。如果您已经创建了应用,则可以执行以下 2 项操作之一:

    使用 mysql 数据库创建一个 another_name 应用程序,转到 cd another_name/config/ 并从这个新应用程序复制 database.yml 文件。将其粘贴到 your_app_name 应用的 database.yml 中。但请确保更改数据库名称并在 database.yml 文件中相应地设置数据库的用户名/密码。

    转到 cd your_app_name/config/ 并打开 database.yml。重命名如下:

开发: 适配器:mysql2 数据库:db_name_name 用户名:root 密码: 主机:本地主机 套接字:/tmp/mysql.sock

此外,从您的 Gemfile 中删除 gem 'sqlite3' 并添加 gem 'mysql2'

【讨论】:

【参考方案6】:

如果您使用的是 rails 3 或更高版本

rails new your_project_name -d mysql

如果你有更早的版本

rails new -d mysql your_project_name

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

找到
rails -v

【讨论】:

【参考方案7】:
rails -d mysql ProjectName

【讨论】:

【参考方案8】:
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

【讨论】:

【参考方案9】:

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

rails new AppName -d mysql

【讨论】:

【参考方案10】:
$ rails --help 

永远是你最好的朋友

用法:

$ rails new APP_PATH[options]

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

rails 和 mysql

$ rails new project_name -d mysql

rails 和 postgresql

$ rails new project_name -d postgresql

【讨论】:

【参考方案11】:

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

  rails -D mysql project_name  (less than version 3)

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

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

【讨论】:

【参考方案12】:

在 Rails 3 中,你可以这样做

$rails new projectname --database=mysql

【讨论】:

【参考方案13】:

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

rails -d mysql myapp

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

【讨论】:

【参考方案14】:

只需转到 Rails 控制台并输入:

rails new YOURAPPNAME -d mysql

【讨论】:

【参考方案15】:

在新项目上,轻松愉快:

rails new your_new_project_name -d mysql

在现有项目上,肯定更棘手。这给我现有的 Rails 项目带来了一些问题。这种对我有用:

# 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 

【讨论】:

【参考方案16】:

首先确保安装了mysql gem,如果没有?而不是在控制台中输入以下命令

gem install mysql2

通过在控制台中输入以下命令来创建新的 rails 应用程序并将 mysql 数据库设置为默认数据库

rails new app-name -d mysql

【讨论】:

您想将 gem 添加到 Gemfile。【参考方案17】:

使用以下命令使用mysql数据库为API创建新应用

rails new <appname> --api -d mysql


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

【讨论】:

【参考方案18】:

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

宝石文件

# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'

【讨论】:

【参考方案19】:

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

sudo apt-get install mysql-client libmysqlclient-dev

并将其添加到您的 Gemfile 中

gem 'mysql2', '~> 0.3.16'

然后在你的项目根目录下运行

bundle install

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

【讨论】:

以上是关于使用 MySQL 而不是 SQLite 创建一个新的 Ruby on Rails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

sqlite上的重复索引,而不是mysql

创建新的 AWS RDS 实例并导入数据,而不是将 MySQL 版本从 5.6 更新到 5.7

Windows 上的 PHP5.4,有 sqlite 但没有 Apache 和 MySQL

如何使用本机 sqlite 库而不是 QSql 从 sqlite 插入和检索 QString

Windows Universal现有应用程序向SQLite表添加新列

jsplumb.connect() 使用现有端点而不是创建新端点