在rails中使用mysql时我的数据库位于何处?

时间:2012-03-25 19:34:24

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

我正在学习使用mysql作为rails应用程序,我终于能够启动并运行我的应用程序(现在有点)。我设法用homebrew安装mysql,然后填充我的database.yml文件并运行rake db:create。现在我可以运行我的rails服务器并导航到我的应用程序的主页(之前我没有数据库错误)。

那么,既然似乎创建了数据库,它位于何处?我很想知道,因为我之前使用的是sqlite3,并且能够在app / db / development.db中看到我的开发数据库文件

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

4 个答案:

答案 0 :(得分:6)

当使用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和您的应用程序代码管理。

答案 1 :(得分:1)

如果您已成功创建数据库,那么您可能有这样的设置。在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)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

root@myserver# mysql -u root -opabc123

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

不要通过-o并尝试。

希望这会有所帮助