【问题标题】:where is my database located when using mysql in rails?在rails中使用mysql时我的数据库在哪里?
【发布时间】:2023-03-27 19:20:01
【问题描述】:

我正在学习将 mysql 用于 Rails 应用程序,我终于能够启动并运行我的应用程序(暂时)。我设法用自制软件安装了 mysql,然后填充了我的 database.yml 文件并运行了 rake db:create。现在我可以运行我的 Rails 服务器并导航到我的应用程序主页(之前我遇到了无数据库错误)。

那么,现在看来数据库已创建,它位于何处?我想知道,因为我以前使用过 sqlite3 并且能够在 app/db/development.db 中看到我的开发数据库文件

我只是想更详细地了解 mysql 在 Rails 上下文中是如何工作的。

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    当使用 MySQL 或其他完整的基于服务器的 RDBMS 系统而不是 SQLite 时,您的应用程序不会创建数据库文件。相反,数据库存储在服务器正在运行的 MySQL 实例中。

    从技术上讲,有一些文件与存储在 MySQL 数据目录中的表相关联,但它们的位置与您的应用程序无关,实际上您的常规 shell 用户帐户甚至可能无法读取这些文件。通过使用客户端/服务器 RDBMS 而不是 SQLite 等基于文件的 RDBMS,您可以有效地将与数据库存储相关的所有职责(*) 委托给 RDBMS,从而将数据存储与应用程序分离。

    如果您使用客户端连接到主机的 MySQL 服务器,您将看到与列出的 Rails 应用程序数据库

    # Connect from the command line
    $ mysql -usomeusername -p
    
    # Execute  MySQL commands
    mysql> SHOW DATABASES;
    

    会输出如下内容:

    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | demo               |
    | demo_development   |
    | demo_test          |
    | mysql              |
    | test               |
    +--------------------+
    7 rows in set (0.13 sec)
    

    (*)注意 - 我指的是数据模型存储,而不是您的应用程序可能使用的任何其他基于文件的存储,它由 Rails 和您的应用程序代码管理。

    【讨论】:

    • 一旦我到达第二行(显示数据库),结果是“忽略对其他数据库的查询”,而不是您的输出......关于为什么的任何想法?
    • 查看this post 您的命令行是否正确,尤其是-usomeusername 部分?这实际上是 -usomeusername 粘在一起。
    【解决方案2】:

    如果你已经成功创建了 db,那么你可能有这样的 conf。在 database.yml 中:

    development:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: site_db
      pool: 5
      username: root
      password: secret
      socket: /var/run/mysqld/mysqld.sock
    

    您可以使用 phpmyadmin 或终端查看您的数据库 (sitedb)

    【讨论】:

      【解决方案3】:

      确保使用 -u 命令连接到 mysql,例如 root,然后它将列出数据库。 (提供你的 database.yml 文件中的内容)。我只是用 no -u 连接,什么也没看到。很可能与我的本地用户连接,我没有查看数据库的权限!哎呀!

      【讨论】:

        【解决方案4】:

        根据我最近的经验,我认为您在输入 mysql 凭据时拼错了命令选项。就我而言,我输入了以下内容:

        root@myserver# mysql -u root -opabc123
        

        其中-o-p 是命令选项,其余的:abc123 是密码。在这里我不小心输入了-o 命令选项,这是导致数据库消失的原因。 (见-o-one-database。)

        不要通过-o并尝试。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2014-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-04
          • 1970-01-01
          • 2010-11-17
          • 1970-01-01
          • 2011-12-21
          相关资源
          最近更新 更多