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

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

【问题讨论】:

    标签: mysql ruby-on-rails ruby


    【解决方案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 项操作之一:

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

          1. 转到 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 作为以前的答案

                                    【讨论】:

                                      猜你喜欢
                                      • 2014-03-03
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2018-03-01
                                      • 1970-01-01
                                      • 2012-09-15
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多