使用MySQL代替SQLite创建一个新的Ruby on Rails应用程序

使用MySQL代替SQLite创建一个新的Ruby on Rails应用程序

Create a new Ruby on Rails application using MySQL instead of SQLite

我想用MySQL创建我的Rails应用程序,因为我非常喜欢它。 如何在最新版本的Rails中而不是默认的SQLite中执行此操作?


通常,您将使用以下命令创建一个新的Rails应用程序:

1
rails ProjectName

要使用MySQL,请使用

1
rails new ProjectName -d mysql

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

1
2
3
4
5
6
7
development:
  adapter: mysql2
  database: db_name_dev
  username: koploper
  password:
  host: localhost
  socket: /tmp/mysql.sock

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


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

1
$ rails new projectname -d mysql

转到终端并输入:

1
rails new <project_name> -d mysql


如果您尚未创建应用程序,请转到cmd(对于Windows)或terminal(对于linux / unix),然后键入以下命令以使用mysql数据库创建Rails应用程序:

$rails new -d mysql

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

  • 使用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
    密码:
    主机:localhost
    套接字:/tmp/mysql.sock

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


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

    1
    rails new your_project_name -d mysql

    如果您有较早的版本

    1
    rails new -d mysql your_project_name

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

    1
    rails -v

    1
    rails -d mysql ProjectName

    1
    rails new <project_name> -d mysql

    要么

    1
    rails new projectname

    config / database.yml中的更改

    1
    2
    3
    4
    5
    6
    7
    development:
      adapter: mysql2
      database: db_name_name
      username: root
      password:
      host: localhost
      socket: /tmp/mysql.sock

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

    1
    rails new AppName -d mysql

    1
    $ rails --help

    永远是你最好的朋友

    用法:

    1
    $ rails new APP_PATH[options]

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

    Rails和MySQL

    1
    $ rails new project_name -d mysql

    Rails和Postgresql

    1
    $ rails new project_name -d postgresql

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

    1
    2
    3
      rails -D mysql project_name  (less than version 3)

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

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


    只需转到rails console并输入:

    1
    rails new YOURAPPNAME -d mysql

    在Rails 3中,您可以执行

    1
    $rails new projectname --database=mysql

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

    1
    rails -d mysql myapp

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


    在新项目中,轻松实现:

    1
    rails new your_new_project_name -d mysql

    在现有项目上,绝对棘手。这给了我有关现有Rails项目的许多问题。这种与我合作的作品:

    1
    2
    3
    4
    5
    6
    # 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 gem,如果没有安装?比在控制台中键入以下命令

    1
    gem install mysql2

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

    1
    rails new app-name -d mysql

    如果您使用的是Ubuntu或任何Debian发行版,则首先应确保系统上已安装MySQL驱动程序(如果未在终端上运行该驱动程序)

    1
    sudo apt-get install mysql-client libmysqlclient-dev

    并将其添加到您的Gemfile

    1
    gem 'mysql2', '~> 0.3.16'

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

    1
    bundle install

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


    使用以下命令为带有MySQL数据库的API创建新应用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    rails new  --api -d mysql


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

    数据库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    # 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

    宝石文件:

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


    推荐阅读